1. Neopixelとは
NeopixelとはAdafruit社(米国)が販売しているArduinoなどで発光を制御できるLEDアレイ電飾のシリーズ商品である。日本ではArduinoも購入できるスイッチサイエンスなどから販売されている。 下のようなLEDがリング状に配列されているものやテープ状ものなどがある
どのように光るかは例えば下の動画が参考になる。 www.youtube.com
2. Neopixel配線とスケッチ
TinkercadのコンポーネントすべてからNeopixel Ring 24を選択する。PWRと電源(5Vに設定)およびGNDを接続する。入力端子は470Ωの抵抗を介してArduinoの6ピンと接続する。(下図参照) シミュレーション上ではArduinoの5V端子とPWRを接続しても成立するが、消費電流が大きい(LED24個)ため電源と接続している。
リング状のLEDを赤で順次点灯、消灯、緑で順次点灯、消灯、青で順次点灯、消灯を繰り返す動作をさせる。スケッチは以下のようになる。(フルカラーLED(NeoPixel)を使ってみる | KatsEyeを参照)
#include <Adafruit_NeoPixel.h> #define PIN 6 #define NUMPIXELS 24 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 100; int lp_cnt=0; uint32_t tmp_color= pixels.Color(0, 0, 0); void setup() { pixels.begin(); } void loop() { if (lp_cnt % 3 == 0){ tmp_color = pixels.Color(50, 0, 0); } else if (lp_cnt % 3 == 1){ tmp_color = pixels.Color(0, 50, 0); } else if (lp_cnt % 3 == 2){ tmp_color = pixels.Color(0, 0, 50); } for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, tmp_color ); pixels.show(); delay(delayval); } delay(500); for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(0,0,0)); pixels.show(); delay(3); } delay(delayval); lp_cnt++; }
Neopixelを制御するライブラリを#include <Adafruit_NeoPixel.h>
としてロードする。Arduinoの出力ピンを#define PIN 6
、NeopixelのLED数を#define NUMPIXELS 24
とする。
オブジェクトpixelsをAdafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
として宣言する。
NEO_GRBやNEO_KHZ800はNeopixelのタイプを表していてほとんどの製品がこれに属する。より詳細は
Arduino Library Use | Adafruit NeoPixel Überguide | Adafruit Learning Systemを参照。
発光させるLEDの色はuint32_t tmp_color= pixels.Color(0, 0, 0);
とする。pixels.Color()
はRGB値を0~255で指定する。setup関数内ではpixels.begin();
としてloop関数内で例えば赤で点灯させる場合はtmp_color=pixels.Color(50,0,0);
として色を指定し、pixels.setPixelColor(i, tmp_color );
でi番目(実際にはfor文でループさせる)のLEDを指定した色であるtmp_colorで発光する設定を行いpixels.show();
でLEDを発光させる。
LEDを順に発行させたあとはfor文内にpixels.setPixelColor(i, pixels.Color(0,0,0));
とpixels.show();
とすることでLEDを消灯させる。
4. まとめ
今回はNeopixelの駆動方法を紹介した。今回はリング状でシミュレーションを行ったが、直線ストリップ状のNeopixelでもLED数の設定を変えるだけで動作する。