ラジオペンチさんの「ダイソーのゆらゆらLEDキャンドルライト」
・ダイソーのゆらゆらLEDキャンドルライト(1/f ゆらぎに改造):ラジオペンチさん
「出窓」に面白そうと、ご近所のダイソーを3軒探したの
ですが、見つからず。
やむを得ず、ダイソーの通販に注文しました。
送料がかかるけど・・・単3Looperもいっしょに
※しかし・・・今朝見たら、商品ページが消えてました。
ちゃんと届くのか不安がぁぁ
ラジオペンチさんのArduino UNOによる駆動系、
せっかくですんで使えるPWM出力6つを全部使って、
3つのキャンドルライトを駆動できるようにスケッチを
手直ししてみました。
・PWM出力チャンネル番号をテーブルに。
・明るさデータを3つの配列に。
・3chのループを回して独立して処理。
・「チラツキ防止のため、10回に分けて」
「補間1ステップ時間(全体ではこの10倍)」
は、loopの一番外側に「for(i = 1」を持ってきて
コイル駆動は i = 1のときだけにして、LED処理
は毎回で、というふうに。
// ラジオペンチさん:
// ダイソーのゆらゆらLEDキャンドルライト(1/f ゆらぎに改造)
// http://radiopench.blog96.fc2.com/blog-entry-1355.html
// 20250908_LedCandleCaosMethod.ino
// カオス方を使った 1/f ゆらぎを持つLEDキャンドル
// 2025/9/8 ラジオペンチ
// 9/11 3ch出力に改造:居酒屋ガレージ店主(JH3DBO)
byte COIL_PIN[] = { 6, 9, 11 }; // コイル駆動PWM出力 3ch
byte LED_PIN[] = { 5, 10, 3 }; // LED駆動
float xx[3] = { 0.7, 0.7, 0.7};
float last_xx[3];
float xxx[3];
void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT); // LED
Serial.println("Start ");
}
void loop() {
PINB |= (1 << 5); // PB5 LED on/off
for (int i = 1; i <= 10; i++) { // チラツキ防止のため、10回に分けて、
for (byte j = 0; j < 3; j++){ // 3ch loop (0,1,2)
if (i == 1){ // 10loopの最初だけ実行
xx[j] = fluctuate(xx[j]); // カオス法で新しい明るさを決定
Serial.print(j);
Serial.print(", ");
Serial.print(xx[j]);
Serial.print(", ");
// コイルに通電して炎の板を揺らす
xxx[j] = last_xx[j] - xx[j]; // 明るさの差(減光量)が、
if (xxx[j] > 0.15) { // 一定値を超えていたら(値は要調整)
analogWrite(COIL_PIN[j], 255 * sqrt(xxx[j])); // コイルに通電
//(sqrtは値を1に近付けるため)
Serial.println(sqrt(xxx[j]));
} else { // 超えてなければ
analogWrite(COIL_PIN[j], 0); // コイル通電OFF
Serial.println(0);
}
}
// LEDの明るさを変える (i=1~10)
xxx[j] = last_xx[j] + (xx[j] - last_xx[j]) * i / 10.0; // 指定値まで直線補完で、
analogWrite(LED_PIN[j], 70 + xxx[j] * 180); // LEDの明るさを設定
last_xx[j] = xx[j];
}
delay(10); // 補間1ステップ時間(全体ではこの10倍)
}
}
float fluctuate(float x) { // 間欠カオス法で 1/f波形を生成
if (x < 0.5) { // 0.5以上なら
x = x + 2 * x * x; // 2x^2で徐々に増加
} else { // 0.5以下なら
x = x - 2 * (1.0 - x) * (1.0 - x); // 2(1-x)^2で徐々に減少
} //
if (x < 0.05 || x > 0.95) { // 結果が上下限を外れていたら、
x = random(100, 900) / 1000.0; // 乱数で0.1-0.9の範囲に戻す
}
return x;
}
こんな具合にスケッチはできたけど、キャンドルライトが
来ないことには試運転もできません。
出力パルスをオシロで見てるだけ。
商品ページが消えてしまったキャンドルライト、
はたしてちゃんと届くのでしょうか。
※PWM出力の順番
コイル駆動PWM出力 : 6, 9, 11
LED駆動PWM出力 : 5, 10, 3
これはATmega328Pにある3つのタイマーユニット
出力のペアに合わせてるので飛び飛びになってます。
OC0A 6
OC0B 5
OC1A 9
OC1B 10
OC2A 11
OC2B 3
※3ch版、完成形に
・ラジオペンチさんの「ダイソーのゆらゆらLEDキャンドルライト」#2
出窓へのデビューはいつになりますか・・・
| 固定リンク
「出窓」カテゴリの記事
- 「ダイソーのゆらゆらLEDキャンドルライト」出窓にデビュー(2025.10.01)
- ラジオペンチさんの「ダイソーのゆらゆらLEDキャンドルライト」#2(2025.09.15)
- ラジオペンチさんの「ダイソーのゆらゆらLEDキャンドルライト」(2025.09.11)
- 謹賀新年! 本年もよろしくお願いします。(2025.01.01)
- ステッピングモータ駆動回路を24Vだけで #2(2024.10.31)
「Arduino」カテゴリの記事
- ラジオペンチさんの「ダイソーのゆらゆらLEDキャンドルライト」#2(2025.09.15)
- ラジオペンチさんの「ダイソーのゆらゆらLEDキャンドルライト」(2025.09.11)
- ATtiny402サンプル:"Wire.h"を使わずI2Cで液晶表示 AQM1602だと(2025.09.09)
- ATtiny402サンプル:I2Cで液晶表示 SCL周波数を設定できるようにしたら(2025.09.09)
- ATtiny402マイコン サンプル:I2Cで液晶表示(Wire.hを使わないで)(2025.09.08)


コメント
ダイソーの通販から「発送しました」とのメールが着信。
キャンドルライト、なんとか手に入りそうです。
投稿: 居酒屋ガレージ店主(JH3DBO) | 2025年9月12日 (金) 09時46分