ESP8266搭載ボードD1 miniにフルカラーLEDが12個付いたモジュールWeMos X-Ringをつないでテスト。X-Ringは別のボード用のオプションなんだけど、安いので買ってみたのだった。という2018年の話。コードはどこにあるの? という質問があったので掲載しようと思った次第。そのコメントが付いた動画はこれ。
でもって、コードを掲載するわけだけど、その前に参考にしたものを。色を刻々と変えるためのコード。これはとても参考になりました。というか、何度も使わせていただいてます。ありがとうございます。
では、以下にコード。コメントをくれた人が海外の人だったので、コード内のコメントをある程度英語に直したけど、わかんないところはそのまま日本語で。
#include <Adafruit_NeoPixel.h> // https://github.com/adafruit/Adafruit_NeoPixel #define PIN D2 #define STRIPSIZE 12 Adafruit_NeoPixel strip = Adafruit_NeoPixel(STRIPSIZE, PIN, NEO_RGB + NEO_KHZ800); int illumiH = 30; int illumiR , illumiG , illumiB ; int illumiStep = 30; //色の変化の度合い(360度) int illumiBrightness = 5; void setup() { strip.begin(); strip.setBrightness(illumiBrightness); // Lower brightness and save eyeballs! strip.show(); // Initialize all pixels to 'off' } void changeColor(){ illumiH = illumiH + illumiStep; if (illumiH > 360) { illumiH = 0; } /* convert HSV H to RGB LED(0-255) */ if (illumiH <= 120) { /* H(0-120) R-Yello-Green */ illumiR = map(illumiH, 0, 120, 255, 0) ; // R LED R←→G illumiG = map(illumiH, 0, 120, 0, 255) ; // G LED G←→R illumiB = 0 ; } else if (illumiH <= 240) { /* H(120-240) G-Cyan-B */ illumiG = map(illumiH, 120, 240, 255, 0) ; // G LED G←→B illumiB = map(illumiH, 120, 240, 0, 255) ; // B LED B←→G illumiR = 0 ; } else { /* H(240-360) B-Magenta-R */ illumiB = map(illumiH, 240, 360, 255, 0) ; // B LED B←→R illumiR = map(illumiH, 240, 360, 0, 255) ; // B LED R←→B illumiG = 0 ; } } void loop() { // for each pixel set color to red. Wait 100ms between each individual pixel. for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, strip.Color(illumiR, illumiG, illumiB)); strip.show(); delay(100); } for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, strip.Color(0, 0, 0)); strip.show(); delay(100); } changeColor(); }
ついでにメモ。久々にコードを掲載。WP-Code Prettifyプラグイン入れてたのを忘れていたので、設定方法をあらためて確認。preタグのclass属性にprettyprintをつけるって。
コメント