5.Arduino IDE スケッチ入力
Arduino IDE の設定や Adafruit ライブラリのインストールは前回の記事を参照してください。
スケッチは前回のものより少々変えています。
ホワイト/グリーンパターンや、ホワイト/ブルーパターンを追加しています。
【ソースコード】 (※無保証 ※PCの場合、ダブルクリックすればコード全体を選択できます)
#include <Adafruit_NeoPixel.h> #define PIN 5 //シリアル通信GPIOピン番号 #define MAXPIXELS 12 //LED素子の最大数 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(MAXPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint8_t LedNum1_Inc = 9; //最初にフェードインするLED番号 uint8_t LedNum1_Dec = 8; //フェードアウトするLED番号 uint8_t LedNum2_Inc = 5; uint8_t LedNum2_Dec = 4; uint8_t LedNum3_Inc = 1; uint8_t LedNum3_Dec = 0; uint8_t ChangeType = 0; //LED点灯パターンを決める引数 uint32_t ChangeTime; //LED点灯パターンを変える時間 int cnt = 0; //256段階でLEDをフェードさせるためのカウント void setup() { pixels.begin(); // This initializes the NeoPixel library. pixels.setBrightness(255); //Max 255 ChangeTime = millis(); } void loop() { if(millis() - ChangeTime > 15000){ //15 second Type Change ChangeType++; if(ChangeType == 5) ChangeType = 0; ChangeTime = millis(); } switch(ChangeType){ case 0: //RGB type pixels.setPixelColor(LedNum1_Inc, pixels.Color(cnt, 0, 0)); pixels.show(); // This sends the updated pixel color to the hardware. pixels.setPixelColor(LedNum1_Dec, pixels.Color(255-cnt, 0, 0)); pixels.show(); pixels.setPixelColor(LedNum2_Inc, pixels.Color(0, cnt, 0)); pixels.show(); pixels.setPixelColor(LedNum2_Dec, pixels.Color(0, 255-cnt, 0)); pixels.show(); pixels.setPixelColor(LedNum3_Inc, pixels.Color(0, 0, cnt)); pixels.show(); pixels.setPixelColor(LedNum3_Dec, pixels.Color(0, 0, 255-cnt)); pixels.show(); break; case 1: //Green White pixels.setPixelColor(LedNum1_Inc, pixels.Color(cnt, 100, cnt)); pixels.show(); pixels.setPixelColor(LedNum1_Dec, pixels.Color(255-cnt, 100, 255-cnt)); pixels.show(); break; case 2: //CMY type pixels.setPixelColor(LedNum1_Inc, pixels.Color(cnt, cnt, 0)); pixels.show(); pixels.setPixelColor(LedNum1_Dec, pixels.Color(255-cnt, 255-cnt, 0)); pixels.show(); pixels.setPixelColor(LedNum2_Inc, pixels.Color(0, cnt, cnt)); pixels.show(); pixels.setPixelColor(LedNum2_Dec, pixels.Color(0, 255-cnt, 255-cnt)); pixels.show(); pixels.setPixelColor(LedNum3_Inc, pixels.Color(cnt, 0, cnt)); pixels.show(); pixels.setPixelColor(LedNum3_Dec, pixels.Color(255-cnt, 0, 255-cnt)); pixels.show(); break; case 3: //Orange, Green type pixels.setPixelColor(LedNum1_Inc, pixels.Color(cnt, 10, 0)); pixels.show(); pixels.setPixelColor(LedNum1_Dec, pixels.Color(255-cnt, 10, 0)); pixels.show(); break; case 4: //White, Blue type pixels.setPixelColor(LedNum1_Inc, pixels.Color(cnt, cnt, 200)); pixels.show(); pixels.setPixelColor(LedNum1_Dec, pixels.Color(255-cnt, 255-cnt, 200)); pixels.show(); break; } cnt++; if(cnt == 256){ //フェードが最大、最少になったらLED素子を変える LedNum1_Inc++; if(LedNum1_Inc >= 12) LedNum1_Inc = 0; LedNum1_Dec++; if(LedNum1_Dec >= 12) LedNum1_Dec = 0; LedNum2_Inc++; if(LedNum2_Inc >= 12) LedNum2_Inc = 0; LedNum2_Dec++; if(LedNum2_Dec >= 12) LedNum2_Dec = 0; LedNum3_Inc++; if(LedNum3_Inc >= 12) LedNum3_Inc = 0; LedNum3_Dec++; if(LedNum3_Dec >= 12) LedNum3_Dec = 0; cnt = 0; } }
6.コンパイル書き込み、実行
では、Arduino IDE でコンパイル書き込み、実行させてみてください。
色は以下のように5パターンあります。
●RGB ( Red, Green, Blue )パターン
この色はクリスマスっぽい気がします。
●White/Green パターン(ピンクっぽく見える)
実際の色の方がクッキリ見えます。
●CMY ( シアン、マゼンダ、イエロー ) パターン
●オレンジ/グリーンパターン
これは「和」っぽいテイスト感があります。
●White/Blue パターン
これもクリスマスっぽいですね。
7.まとめ
いかがでしょうか。
うまくできましたでしょうか。
単純な構造にしては、見た目は意外とイイ感じだと思っています。
これで、今年のクリスマスの卓上イルミネーションオブジェは何とかいけそうです。
これでも裸眼で見続けていると結構辛い明るさなので、適度にBrightnessを調節してください。0~255の間の数値で変えればよいです。
これを使って、光ファイバーを松葉と見立てて、竹を紙で表現すれば、正月飾り対応にも出来そうです。
それをスマホでWi-Fiで色をコントロールすれば、いろいろ使えそうです。
次回はそれに挑戦してみようと思ってます。
ではまた・・・。
(その後、こんなのも作りましたのでご参照ください)
https://www.mgo-tec.com/blog-entry-obj-led-color-smartphone-wifi.html
その他、最新記事では、ESP32 や M5Stack を使ってNeoPixelを Wi-Fi コントロールしたりしています。
https://www.mgo-tec.com/blog-entry-art-net-dmx-m5stack-neopixel.html
https://www.mgo-tec.com/blog-entry-led-tape-neopixel-esp32-artnet.html
コメント