踏切組み込み計画の挫折 [Arduino]
前回の踏切カンカンを ATtiny45V (8MHz) に移植してみました。
スイッチを押したときに鳴るようにしました。1回の「カ-ン」が途切れないようになっています。
あいかわらず見苦しいスケッチですが、前回のを少し改変
ここまできたので目標であったこいつに組み込みを、、、。
・・・
アレっ、意外と小屋が狭い、、。
単4電池2本が入りそうだと思っていたのですが、小屋の中の柱が邪魔で入りませんでした。
外付け電池ボックスも格好が悪いし、ボタン電池は子供のおもちゃには心配だし、容量が少なく交換のたびに小屋のネジを開け閉めするのは面倒だし。
スイッチを押したときに鳴るようにしました。1回の「カ-ン」が途切れないようになっています。
あいかわらず見苦しいスケッチですが、前回のを少し改変
// 踏切くん (ATtiny45, 8MHz) byte sigLED = 0; // LEDの状態 byte railSW = 0; // スイッチの状態 void setup() { DDRB |= B00000100; // ピン2を出力に設定 pinMode(0, INPUT); // SW pinMode(3, OUTPUT); // LED (Signal R) pinMode(4, OUTPUT); // LED (Signal L) } void loop() { // 新たにスイッチを押した場合と、音が鳴っているときにスイッチが押されてた場合 if( railSW || digitalRead(0) ) { railSW = 0; digitalWrite( 3, sigLED ); // LEDを交互に光らせる digitalWrite( 4, sigLED = 1 - sigLED ); ding(); } else { digitalWrite( 3, LOW ); digitalWrite( 4, LOW ); } } void ding() { unsigned int t; byte pwm, rep, smp; for(t = 1; t < 750; t++) { // 音を鳴らす railSW |= PINB & B00000001; // ピン0が1回でもHIGHならSWがONと記録 smp = (t % 5) * 4 * (1000 - t) / 1000; // 波形を作る for(rep = 0; rep < 50; rep++) { // 高速PWMで擬似アナログ出力 PORTB |= B00000100; // ピン2をHIGH for(pwm = 0; pwm < smp; pwm++) asm("nop"); PORTB ^= B00000100; // ピン2をLOW (反転) for(pwm = smp; pwm < 16; pwm++) asm("nop"); } } }
ダウンロードは🎥こちら
ここまできたので目標であったこいつに組み込みを、、、。
・・・
アレっ、意外と小屋が狭い、、。
単4電池2本が入りそうだと思っていたのですが、小屋の中の柱が邪魔で入りませんでした。
外付け電池ボックスも格好が悪いし、ボタン電池は子供のおもちゃには心配だし、容量が少なく交換のたびに小屋のネジを開け閉めするのは面倒だし。