LEDデジタル時計
高速に往復する棒にLEDがついてて時間を表示する時計を見たことがあったので, 簡単にできないかと思ってちょっと実験. こんな感じで・・・ CIMG4105.JPG 長細くLEDを6個並べてアノードをArduinoのデジタル8−13ピンに接続. カソードコモンで1kΩの抵抗をはさんでGNDに接続. (デジタル8−13ピンはPB0−PB5) 秋月さんの安いステッピングモータをFETドライバ,MP4401を介してでデジタル4−7ピン(PD4-PD7)に接続して回す. スケッチは簡単にこれだけ. const byte MOTOR[]={0x30, 0x60, 0xC0, 0x90, 0x00}; // モータはPORTDへ出力 volatile byte mode=1; // モータの加減速・正逆転のモード volatile byte pat=0; // モータの励磁パターンの位相 volatile int cnt=0; // モータの回転数カウント void setup() { DDRB |=B00111111; // PB0-5 LED出力 DDRD |=B11110000; // PD4-7 モータ } void loop() { if (cnt>300) mode=2; if (cnt<100) mode=1; delayMicroseconds(1200); if (mode==1) { cnt++; if (pat < 3) pat++; else pat = 0; } if (mode==2) { cnt--; if (pat > 0) pat--; else pat = 3; } PORTD &=0x0f; PORTD |= MOTOR[pat]; //モータへパターンの出力 PORTB &=0xc0; PORTB |= (cnt-100)/2; // LEDへパターンの出力 } 結果は,シャッタースピードを落として写真を撮るとこんな感じ. 暗いところではまあまあなのですが,明るいところで見ると往復が遅くて残像が残りません. CIMG4088.JPG 動画で見るとこんな感じ. もう少し棒を長くして,ぎりぎりまで速度を上げるとましになるかもしれません. −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 昨日の実験で作った回路を壊すのももったいないので,そのままブレッドボードに移して, プログラムを作って時計にしました. バーの動きに加減速を加えて脱超しにくくしましたが,5Vでは速度に限界があり,速度を あげるには電圧を上げるしかなさそうです. バーを長くしてなんとか時間が読める程度にはなりました. CIMG4166.JPG 夕方から遅くまでかかってしまったので予定がまた先送り... こちらに,LED時計の動画