フルカラーシリアルLEDテープを光らせてみた。

先日、販売を開始したフルカラーシリアルLEDテープを、Arduino Unoで光らせてみました。

Arduino Unoとの接続は、電源の5V,GNDと信号線1本だけという非常にシンプルな構成です。Adafruit製のライブラリも流用出来るので、スケッチのプログラミングも非常に簡単です。

まずは動画を見てみてください。

御覧の様に、信号線は1本しか使っていないのに、テープ上の個々のLEDを別々の色に光らせることが出来るんです。

今回はとりあえず使ってみるということで簡単な工作だけしています。空き箱に、LED4個分の長さにはさみで切ったLEDテープを両面テープで貼り付け、電極のそばに空けた穴からビニール線で配線しました。Arduinoからの3本をテープの端のDIN,5V,GNDに接続し、反対側のDO,5V,GNDを次のテープのDIN,5V,GNDへと繋いで行きます。一番最後のテープ端はそのまま何も繋ぎません。

 

スケッチのプログラムは、ライブラリ付属のものにちょっと手を加えてます。といっても最大輝度を落としたくらいですが。

ちょっと解説すると

#include <Adafruit_NeoPixel.h>

ライブラリの読み込みです。

Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);

インスタンスの作成です。最初のパラメータはLEDの個数です。今回は16個しか使っていませんが、サンプルスケッチから変更しませんでした。もちろんピッタリの数を入れればメモリ領域(SRAM)を節約できます。2番目のパラメータは使用するデジタルピンの番号です。最後のパラメータはデータの並べ方や転送速度ですが、ここも変更しませんでした。

strip.begin();
strip.show();

.begin()でインスタンスの使用を開始。この時すべてのLEDのすべてのチャンネル用のArduino上のメモリに0が書き込まれ、.show()でArduinoからLEDへ転送されて一旦すべてのLEDがオフになります。

strip.setPixelColor(i, c);

こちらはi番目のLEDのArduino上のメモリにcで表されるカラーデータを書き込む関数です。このcの値は strip.Color(r ,g , b) の様に.Color関数でRGBそれぞれの値から作成することが出来ます。Arduino上のメモリにデータが作成できたら、.show()で、すべてのLEDへ一気に転送させLEDの色に反映させます。

あとはこれらの組み合わせだけですので、簡単ですね。

下のスケッチライブラリ付属のスケッチに手を加え、MAX_VALの設定値で最大輝度を変えられるようにした例です。

Pocket