ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

WS2812 デジタルLEDをTrinketで点灯させてみた

2014年01月26日 16時28分33秒 | Arduino
以前、シリコンハウスのレジ横でふと見つけたArduino互換ボードがありました。
それが、Adafruit(エイダフルートです、一応)のTrinketです。


中身はこれです。


ピンヘッダをハンダ付けしようとしたら、
5ピンなのに6ピンのピンヘッダが付いていました。

はい、それだけハンダ付けしたら工作は終わりです。w




これで終わったらつまらないので、一応Lチカでもやってみましょう。
Arduino互換だと言うので、多分簡単に違いありません。

まずは、説明書の通り、Adafruitのサイトに行きます。
http://www.adafruit.com/products/1501

普通イントロダクションから始めるのでしょうが、
Arduino互換なので、ちょっとはしょりましょう。

Setting up with Arduino IDE へ行きます。
手っ取り早く動かしたい場合は The Fast Way でAdafruit Arduino 1.0.5.app をダウンロードします。
ここからは Mac OS での場合を書いてみます。

ところが、これを実行しようとすると、なぜか壊れてると言われてしまいます。
よく見ると、Mac OS がMavericksの場合は、ここを修正する必要があります。


私の場合、すでに変更していました。
再度ダウンロードしても、やはり壊れていると言われてしまいました。

なんで?



しょうがないので、 The Slow Way の方を試してみます。
Arduino IDE v1.0.5 はインストール済みなので、
Step 1. Add ATtiny85 Support から始めます。

まずは、ATtiny85 をArduino IDE に加えるため、
このアイコンをクリックします。


すると、ダウンロードしたファイルが解凍されて
Downloadsフォルダに hardware と言うフォルダが出来ます。


そして、このフォルダごとArduinoのスケッチの入ったフォルダに移します。


この状態で、Arduino IDE を起動すると、
マイコンボードにAdafruit のTrinketなどの3つのボードが追加されます。




これが、確認出来たらQuitして次のステップです。
次は、Step 2. Updating avrdude.conf です。

まず、このアイコンをクリックします。


すると、Downloadsフォルダに avrdude.conf がダウンロードされます。

これを Arduino.app の中に入れるのですが、
ダブルクリックすると、起動してしまうので、右クリックします。


内容を表示を選んで、etcフォルダまで開きます。


ここにある avrdude.conf をダウンロードしたものに入れ換えるのです。
avrdude.conf.bak を消して avrdude.conf を avrdude.conf.bak に変えておきましょう。
そこへ avrdude.conf を移せばOKです。


次に Step 3. Update 'ld' linker を行います。
やはり、同様にアイコンをクリックします。


すると、Downloadsフォルダに ld と言うファイルがダウンロードされます。

これを入れるのはここです。


ここにある ld を消して、ダウンロードした ld と入れ換えます。


これで、完了です。
Arduino IDE を起動してみましょう。
そして、Lチカです。

Blink! と言うところに、コードがあるので、ここをクリックします。


そして、空のスケッチへ貼り付けます。



マイコンボードは Trinket の 8MHzを選びます。



ただし、書き込みはシリアルポートではなく USBtinyISPを選びます。



で、いつもの調子でマイコンボードに書き込むをやるとエラーが出ます。


Trinket の場合、自動的にリセットが掛からないので、
ブートローダも自動で起動しないのです。
すなわち、書き込みを開始する前にリセットボタンを押して
ブートローダを起動する必要があるのです。

リセットボタンを押すと、赤いLEDがふわふわと明滅します。

これが、ブートローダの表示なのです。
この表示がしている間にマイコンボードに書き込むをクリックします。

すると、赤いLEDが点滅に変わりました。
これでLチカ成功です。

と、言われても、ブートローダの表示とあまり変わらないので、
つまらないですね。

とは言っても、ATtiny85で使えるIOは5個しかありません。
Trinket では#0~#4までです。
Arduino のディジタルIOとして使う場合はこのまま0~4として使えます。
アナログ入力に使う場合は、#2がA1、#3がA3、#4がA2 として使えますが、
analogRead()でA1~A3の記号は使えないので、1,2,3を使います。


IOが少ないので、用途は限られますが、
WS2812なら1本の出力さえあれば動かせます。
先日の24個のリングと同じものがAdafruitにあります。
実はここのNeoPixel library のソースコードを見ていた時に
Trinketがあるのに気が付いていました。


このライブラリをダウンロードすると Adafruit_NeoPixel-master と言うフォルダが出来るので、
Adafruit_NeoPixel に変更してから libraries フォルダに入れます。
そして、サンプルスケッチを選びます。



そして、PIN を6から2に変更し、LEDの数を24にして
Trinket に書き込むとサクッと動きました。


今回は、ソースコードの中に書いてある通り
電源に1000μFを入れ、通信線には330Ωを入れておきました。