光ファイバー 卓上オブジェ を作ってみた( NeoPixel フルカラー LED 使用 )

ESP8266 ( ESP-WROOM-02 )

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

コメント

タイトルとURLをコピーしました