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をつけるって。


コメント