LEDデジタル時計
高速に往復する棒にLEDがついてて時間を表示する時計を見たことがあったので, 簡単にできないかと思ってちょっと実験. こんな感じで・・・ 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へパターンの出力 } 結果は,シャッタースピードを落として写真を撮るとこんな感じ. 暗いところではまあまあなのですが,明るいところで見ると往復が遅くて残像が 残りません. 動画で見るとこんな感じ. もう少し棒を長くして,ぎりぎりまで速度を上げるとましになるかもしれません. ---------------------------------------- 昨日の実験で作った回路を壊すのももったいないので,そのままブレッドボードに 移して,プログラムを作って時計にしました. バーの動きに加減速を加えて脱超しにくくしましたが,5Vでは速度に限界があり, 速度をあげるには電圧を上げるしかなさそうです. バーを長くしてなんとか時間が読める程度にはなりました. 夕方から遅くまでかかってしまったので予定がまた先送り... こちらに,LED時計の動画
ESP32 Wifi Bluetooth開発ボード |
Arduino Nano Every |
Raspberry Pi pico |
FPGA XILINX Artix-7 |