第4回 5/8

今回はLEDの方にちからをいれて取り組みました。以下がchatGTPも利用して作ったArduinoのコードである。
上と下のLEDをpixelsに、真ん中のLEDをpixel2として動きを分けた。また、動画越しだと分かりにくいが色が徐々にずれて変わっている事にも注目してほしい
  1. #include <Adafruit_NeoPixel.h>
  2. #define PIN 6 // 信号用のピンを指定
  3. #define PIN2 10 // 信号用のピンを指定
  4. #define NUMPIXELS 5 // LEDの数を指定
  5. Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
  6. Adafruit_NeoPixel pixel2(NUMPIXELS, PIN2, NEO_GRB + NEO_KHZ800);
  7. #define DELAYVAL 100
  8. int step_num = 0;
  9. int delta = 1;
  10. int color1[] = {255, 0, 0}; // 色1: 赤
  11. int color2[] = {0, 255, 0}; // 色2: 緑
  12. void setup() {
  13.   pixels.begin();
  14.   pixel2.begin();
  15. }
  16. void loop() {
  17.   pixels.clear();
  18.   for (int i = 0; i < pixels.numPixels(); i++) {
  19.     int pixelHue = step_num + (i * 65536L / pixels.numPixels());
  20.     pixels.setPixelColor(i, pixels.gamma32(pixels.ColorHSV(pixelHue)));
  21.   }
  22.   pixels.show();
  23.   pixel2.clear();
  24.   for (int i = 0; i < pixel2.numPixels(); i++) {
  25.     int pixelHue = step_num + (i * 65536L / pixel2.numPixels());
  26.     pixel2.setPixelColor(i, pixel2.gamma32(pixel2.ColorHSV(pixelHue)));
  27.   }
  28.   pixel2.show();
  29.   step_num += 256;
  30.   if (step_num == 65536) {
  31.     step_num = 0;
  32.   }
  33.   
  34.   // 色を切り替える条件を設定
  35.   if (step_num % 512 == 0) {
  36.     // 色1と色2を交互に切り替える
  37.     if (delta == 1) {
  38.       // 色1を設定
  39.       pixels.setBrightness(5);
  40.       pixels.setPixelColor(0, pixels.Color(color1[250], color1[50], color1[20]));
  41.       pixel2.setBrightness(100);
  42.       pixel2.setPixelColor(0, pixel2.Color(color1[0], color1[1], color1[2]));
  43.     } else {
  44.       // 色2を設定
  45.       pixels.setBrightness(100);
  46.       pixels.setPixelColor(0, pixels.Color(color2[0], color2[1], color2[2]));
  47.       pixel2.setBrightness(5);
  48.       pixel2.setPixelColor(0, pixel2.Color(color2[0], color2[1], color2[2]));
  49.     }
  50.     delta *= -1; // deltaの値を反転して交互に切り替える
  51.   }
  52.   
  53.   delay(DELAYVAL);
  54. }

参考

NeoPixelリングに使えるエフェクト実装例集