オーロラLED

Arduino

(2025年7月12日のできごと)

とあるYouTubeライブを見ていたら

オーロラLED

という言葉が耳に入ってきまして

 

オーロラみたいに色んな色にひかるのかな、と思い

作ってみました

RGB LEDを使って、R, G, Bそれぞれにランダムな強さを指定

間が滑らかに繋がるようにしています。

言葉での説明は難しいので、最後にソースを載せておきます

 

#define LED_R 11
#define LED_G 10
#define LED_B 9

int R_prev, G_prev, B_prev;
int R_next, G_next, B_next;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED_R, OUTPUT);
  pinMode(LED_G, OUTPUT);
  pinMode(LED_B, OUTPUT);
  R_prev = G_prev = B_prev = 0;
}

void pre2nxt(void)
{
  double R_diff = double(R_next - R_prev) / 256.0;
  double G_diff = double(G_next - G_prev) / 256.0;
  double B_diff = double(B_next - B_prev) / 256.0;

  for (int i = 0; i < 256; ++i){
    analogWrite(LED_R, int(R_prev + R_diff * i));
    analogWrite(LED_G, int(G_prev + G_diff * i));
    analogWrite(LED_B, int(B_prev + B_diff * i));
    delay(2);
  }
}

void SetNextColor(void)
{
  R_next = random(255);
  G_next = random(255);
  B_next = random(255);
}

void CopyNext2Prev(void)
{
  R_prev = R_next;
  G_prev = G_next;
  B_prev = G_next;
}

void loop() {
  SetNextColor();
  pre2nxt();
  CopyNext2Prev();
}

コメント

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