ArduinoユーザーのためのATTiny入門

[Arduino Advent Calendar 2014](http://www.adventar.org/calendars/348) 17日目の記事です。


以前書いた、[「Arduinoで、小っちゃいIC（ATTiny）を使う方法」](http://qiita.com/tadfmac/items/bf5a657add0e9a4b7b77)の続きです。

![つかいまわし！](http://img.dfm.lrv.jp/attiny/xmas.png)
メリークリスマ〜ス（ちょっと早い）

前回、ArduinoでATTinyという小さいAVRを開発すると楽しい、という話をしました。（超てきとう）

今回は、この[ATTinyシリーズ (製造元サイト)](http://www.atmel.com/ja/jp/products/microcontrollers/avr/tinyavr.aspx)の中から、独断と偏見で **Arduino初心者でも扱いやすいと思うもの（基本的にArduino UNOなどのArduinoボードとArduino IDEだけで書き込みできるもの）** をピックアップして紹介したいと思います。

![device](http://img.dfm.lrv.jp/attiny/device.png)
Arduino IDEとArduino UNOでATTiny45に書き込んで作ったUSB MIDI音源

ArdionoでATTinyを開発する方法については、[Arduino IDEで ATtiny/ATmega 開発環境を作る by kosakalabさん](http://make.kosakalab.com/arduino/use/arduino_dev.html)で詳細に紹介されていますので、そちらを参照してください。

## 1. [ATTiny13A](http://www.atmel.com/ja/jp/devices/ATTINY13A.aspx) : 安くて小さい！

[データシート](http://www.atmel.com/Images/doc8126.pdf)
![ATTiny13A](http://img.dfm.lrv.jp/attiny/tiny13a.png)

|項目|データ|
|:-----------|------------:|
|PIN数|8|
|RAM|64byte|
|ROM|1Kbyte|
|DIPあり?|YES|
|アナログ入力|4 ※リセットを空けると3(10bit)|
|デジタル入出力|6 ※リセットを空けると5|
|内蔵クロック(MAX)|9.6Mhz|
|PWM|2|
|タイマー|1(8bit)|
|参考価格(2014/12/17現在)|[1個50円(秋月電子)](http://akizukidenshi.com/catalog/g/gI-02911/)|

ATTiny13Aはとにかく安い！

8PINですので、後に出てくるATTiny10には敵いませんが、DIP版でも小さく作れます。
また、外部クリスタル無しで9.6Mhzで動作できますので、工作も簡単です。
3Vでも動きますので、CR2032などのコイン型電池1個でも動かせます。

**ATTiny13Aが適していると思うプロジェクト（独断と偏見）**

- LEDを光らせたりブザーを鳴らしたりするコイン電池で動く小さなオモチャ
- センサーデバイス（[例](http://qiita.com/tadfmac/items/f2172cdacbdd5600256e)）

値段が安いので、贅沢に使えるのも良いですね！

## 2. [ATTiny85](http://www.atmel.com/ja/jp/devices/ATTINY85.aspx) : 小さいけど速い！容量も大きい！

[データシート](http://www.atmel.com/ja/jp/Images/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summary.pdf)
![ATTiny85](http://img.dfm.lrv.jp/attiny/tiny85.png)

|項目|データ|
|:-----------|------------:|
|PIN数|8|
|RAM|512byte|
|ROM|8Kbyte|
|DIPあり?|YES|
|アナログ入力|4 ※リセットを空けると3(10bit)|
|デジタル入出力|6 ※リセットを空けると5|
|内蔵クロック(MAX)|16.5Mhz|
|PWM|4|
|タイマー|2(8bit)|
|参考価格(2014/12/17現在)|[1個192円(RSオンライン)](http://jp.rs-online.com/web/p/microcontrollers/6962327/)|

ATTiny13Aと同じ8PINですが、こちらは内蔵発振で16.5Mhzまで出せますし、容量も大きいです。タイマーも2つありますので、もっといろいろなプロジェクトで使えると思います。

機能は同じで、容量だけ半分（RAM:256byte/ROM:4Kbyte）のATTiny45や、さらにその半分（RAM:128byte/ROM:2Kbyte）のATTiny25というのもあります。（値段はそれほど変わりません）

**ATTiny85が適していると思うプロジェクト（独断と偏見）**

- [V-USB](http://www.obdev.at/products/vusb/index.html)を使った様々なUSBデバイス
- I2Cインターフェースのデバイスを使うマイコン

USB機器が作れるのが良いです。
反面、SPIのようにPINを沢山使うデバイスの制御には使いにくいです。（それだけでPINがなくなるので）

## 3. [ATTiny44A](http://www.atmel.com/ja/jp/devices/ATTINY44A.aspx) : 8PIN AVRよりIOが多くて使いやすい

[データシート](http://www.atmel.com/ja/jp/Images/8183S.pdf)
![ATTiny44A](http://img.dfm.lrv.jp/attiny/tiny44a.png)

容量が倍のATTiny84Aというのもありますが、ATTiny44Aの方が安く入手しやすいので、今回は44の方を紹介します。

|項目|データ|
|:-----------|------------:|
|PIN数|14|
|RAM|256byte|
|ROM|4Kbyte|
|DIPあり?|YES|
|アナログ入力|8 ※リセットを空けても8!クリスタルを付けても8!(10bit)|
|デジタル入出力|12 ※リセットを空けると11。クリスタルを付けると9|
|内蔵クロック(MAX)|8Mhz|
|PWM|4|
|タイマー|2(8bit×1 + 16bit×1)|
|参考価格(2014/12/17現在)|[1個190円(妙楽堂電子パーツショップ)](http://parts.myourakudo.com/attiny44a-%EF%BD%81%EF%BD%96%EF%BD%92%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3/)|

ATTiny44Aは14PINのAVRです。8PIN AVRより少し大きいサイズになりますが、そのぶんIOが増えて使いやすいです。
SPIを使うようなプロジェクトでは、ATTiny85よりこちらの方が余裕があります。

PINが多いので、外部クリスタルを繋いでも余裕です。PIN数の制約からどうしても内蔵発振に頼らざるを得ない8PIN AVRより安定した動作ができます。

**ATTiny44が適していると思うプロジェクト（独断と偏見）**

- SPIインターフェースの外部デバイスとのIOが必要なプロジェクト
- 16chアナログマルチプレクサを利用した入力装置

実は非常に使い勝手が良いAVRなのですが、ATTiny85やATTiny13Aと比べると少しArduinoで使う情報が少ない気がします。

## 4. [ATTiny4313](http://www.atmel.com/ja/jp/devices/ATTINY4313.aspx) : USARTつき！

[データシート](http://www.atmel.com/ja/jp/Images/8246S.pdf)
![ATTiny4313](http://img.dfm.lrv.jp/attiny/tiny4313.png)

|項目|データ|
|:-----------|------------:|
|PIN数|20|
|RAM|256byte|
|ROM|4Kbyte|
|DIPあり?|YES|
|アナログ入力|なし|
|デジタル入出力|18 ※リセットを空けると17。クリスタルを付けると15|
|内蔵クロック(MAX)|8Mhz|
|PWM|4|
|タイマー|2(8bit×1 + 16bit×1)|
|その他|USART搭載|
|参考価格(2014/12/17現在)|[1個180円(妙楽堂電子パーツショップ)](http://parts.myourakudo.com/%EF%BD%81%EF%BD%96%EF%BD%92%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3-attiny4313/)|

ATTiny4313にはUSARTが搭載されています。代わりにADCがついてない。という変わり種です。
同じ機能でROM/RAMが半分の[ATTiny2313](http://akizukidenshi.com/catalog/g/gI-01600/)というものもあります。

**ATTiny4313が適していると思うプロジェクト（独断と偏見）**

- 外部機器やPCとシリアル通信するプロジェクト
- 液晶モニタなど、デジタルIOを沢山使うデバイスの制御

実はATTinyってUSART付いてるマイコン少ないので、これシリアル通信するときに便利です。

> 12.18追記
> ATTiny4313の開発環境は、小山智史さんが公開されている[「ブレッドボードを使った Arduino流 ものづくり (ATtiny4313版) 」](http://siva.cc.hirosaki-u.ac.jp/usr/koyama/avr/arduino4313.htm)を参考に作成させていただきました！

## 5. [ATTiny861A](http://www.atmel.com/ja/jp/devices/ATTINY861A.aspx) : 20PINだけど、何でもできる！

[データシート](http://www.atmel.com/ja/jp/Images/doc8197.pdf)
![ATTiny861A](http://img.dfm.lrv.jp/attiny/tiny861a.png)

|項目|データ|
|:-----------|------------:|
|PIN数|20|
|RAM|512byte|
|ROM|8Kbyte|
|DIPあり?|YES|
|アナログ入力|11 ※リセットを空けると10。クリスタルを付けると8|
|デジタル入出力|16 ※リセットを空けると15。クリスタルを付けると13|
|内蔵クロック(MAX)|8Mhz|
|PWM|4|
|タイマー|2(8bit×1 + 16bit×1)|
|その他|デッドタイムジェネレータ など|
|参考価格(2014/12/17現在)|[1個200円(秋月電子)](http://akizukidenshi.com/catalog/g/gI-04301/)|

個人的には、あまり使い道が思いつかないので使ったことの無いAVRです。(価格がATmega168Pと同じなので。。。)
ただ、アナログ入力、デジタル入力も豊富ですので、20PIN以内でどうにかしたい！という時は良いかも。

**ATTiny861Aが適していると思うプロジェクト（独断と偏見）**

- 20PINまでのスペースしかないけど、デジタル入力沢山使いたい。ROM容量沢山つかう。

## 番外編①. [ATTiny10](http://www.atmel.com/ja/jp/devices/ATTINY10.aspx) : 超ちっちゃい！

[データシート](http://www.atmel.com/ja/jp/Images/Atmel-8127-AVR-8-bit-Microcontroller-ATtiny4-ATtiny5-ATtiny9-ATtiny10_Datasheet-Summary.pdf)
![ATTiny10](http://img.dfm.lrv.jp/attiny/tiny10.png)


|項目|データ|
|:-----------|------------:|
|PIN数|6|
|RAM|32byte|
|ROM|1Kbyte|
|DIPあり?|NO ※ただし頑張れば手ハンダは可能っぽい（[米粒AVR ATtiny10を表面実装する by shihoさん](https://www.youtube.com/watch?v=7z_Hq_N74Yc)）|
|アナログ入力|4 ※リセットを空けると3|
|デジタル入出力|4 ※リセットを空けると3|
|内蔵クロック(MAX)|8Mhz|
|PWM|2|
|タイマー|1(16bit×1)|
|参考価格(2014/12/17現在)|[1個150円※DIP化モジュールつき(秋月電子)](http://akizukidenshi.com/catalog/g/gI-05174/)|

6PIN!という最小のAVRです。

残念ながら、Arduinoボードだけを持ってるArduino初心者（私もまだそうw）にはハードルが高い気がするのですが（[AVRISP mkII](http://akizukidenshi.com/catalog/g/gM-02582/)というものが必要な模様。。。）、がしかし！Arduino IDEで書き込みできるライブラリが公開されています。

- [世界最小？のArduino互換ボードを作ってみた(暫定版) by まりすさん](http://100year.cocolog-nifty.com/blog/2014/08/arduino-f0f0.html)
- [米粒AVR(ATtiny10)をArduino IDEで使う。暫定レポート２ by kosakalabさん](http://make.kosakalab.com/make/attiny10-2/)

もうちょっと自分のレベルが上がったら挑戦してみたいと思います。

## 番外編②. [ATTiny841](http://www.atmel.com/ja/jp/devices/ATTINY841.aspx) : スゲー高機能！！

[データシート](http://www.atmel.com/ja/jp/Images/Atmel-8495-8-bit-AVR-Microcontrollers-ATtiny441-ATtiny841_Datasheet-Summary.pdf)
![ATTiny841](http://img.dfm.lrv.jp/attiny/tiny841.png)

|項目|データ|
|:-----------|------------:|
|PIN数|14|
|RAM|512byte|
|ROM|8Kbyte|
|DIPあり?|NO|
|アナログ入力|12 ※リセットを空けると11。クリスタルを付けると9|
|デジタル入出力|12 ※リセットを空けると11|
|内蔵クロック(MAX)|8Mhz|
|PWM|6|
|タイマー|3(8bit×1 16bit×2)|
|その他|USART,SPI,I2C(Slaveのみ)搭載|
|参考価格(2014/12/17現在)|[1個192円(Mouser)](http://www.mouser.jp/ProductDetail/Atmel/ATTINY841-SSU/?qs=HVbQlW5zcXVaBIh573n%252bhw%3D%3D)|

14PINのATTinyで、ATTiny44の後継っぽいですが、機能を見ると大幅に変わっていてどちらかというとATmegaに近い充実ぶりです。
しかし、2013年に発売になったばかりということもあり、AVR StudioやAtmel Studioを使えば開発できるようですが、まだArduinoへの対応は終わっていないようです。

> 2015.06.02追記 Arduinoへの対応も進められているようです。

- [SpenceKonde/arduino-tiny-841](https://github.com/SpenceKonde/arduino-tiny-841)

-  [~~eeZeeTiny841~~](https://code.google.com/p/bot-thoughts-eezee/wiki/eeZeeTiny841)
- [~~shimniok/arduino-tiny~~](https://github.com/shimniok/arduino-tiny)

## まとめ

クリスマスは、Arduinoで謎デバイスをたくさんつくろう！！！！

![こんなボードで開発してる](http://img.dfm.lrv.jp/attiny/board.png)
どんなAVRを主に使ってるかバレる開発ボードw