◆5年前にミニコントローラーという商品を買って「花火の情景ジオラマ」を作りました。8個のLEDがランダムに点灯、パッと光って、徐々に消えていく、長さ2cmほどのICマイコンですが、1個3500円もしていました。決して安くなく、「これって作れないのかなぁ」と思ったのがプログラムをやってみたいと思うキッカケだったんです。

◆5年間のコロナ禍ではジオラマ教室もあり、やっと2カ月前に一念発起。プログラムを勉強、というよりユーチューブの学習動画を連日繰り返し見て、やっとその仕組みが分かり、そして現在に至ります。その花火動画を撮りましたのでプログラムの動きをご覧ください。

◆映りは良くないですが「8個のLEDがランダムに点灯、パッと光って、徐々に消えていく」、ほぼ同じ動作をアルデュイーノ・ナノのマイコンで実現出来たと思います。ナノの互換品は1個700円ですので、1/5で出来た計算です。45×18ミリのコンパクトさも魅力です。

◆前置きはここまでにして、これはDFプレーヤーにSDカードに納めた花火の情景音を入れた画像です。ナノとの連動を試みたのですが上手くいかず、今回は独立して電源だけの共有です。青いのは音量調節ボリウムです。

◆いつものように、作ったプログラムです。最後にコピペ出来るものを載せています。

◆それと配線図です。といってもブレッドボードにLED8個と、220オームの抵抗8個つないだだけの簡単なものです。

◆上の画像はアルデュイーノ・ウノですが、先ほどのアルデュイーノ・ナノの画像の配線番号は同じですので、説明はあえて要らないと思います。上に被せた花火の画像はネットから頂いたものです(感謝)。

◆これを動画にあるように、印刷してブレッドボードの大きさに縮小して作りました。

◆大阪も連日猛暑日が続いています。皆様、お身体大切にご自愛ください。

------------------------------------------------------------------

const int ledPins[] = {2,3,4,5,6,7,8,9}; // LEDを接続するピン番号
const int numLeds = 8; //  LEDの数8個

void setup() {
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  randomSeed(analogRead(0)); // ランダムシードを設定する
}

void loop() {
  int ledIndex = random(numLeds); // ランダムにLEDを選択する
  digitalWrite(ledPins[ledIndex], HIGH); // LEDを直ぐに点灯させる
  delay(500); // 点灯時間
  fadeOut(ledPins[ledIndex]); // LEDをゆっくりと消灯させる
}

void fadeOut(int pin) {
  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(pin, brightness);
    delay(15); //消灯速度
  }
  digitalWrite(pin, LOW); // 完全に消灯
  delay(2500);  // 次のLEDが点灯するまでの時間を2.5秒に設定してまんねん
}

-----------------------------------------------------------------

◆各行の頭に1からの行番号がはいります。また、「//」のマークはメモ記入ですので自由に書けまんねん。プログラム、コピペして使って頂ければ幸いです。

◆この作品も今後のジオラマ教室に登場しそうです。何しろ安く作れてしまいましたので。

以上です。