000000 ランダム
 HOME | DIARY | PROFILE 【お気に入りブログ登録】 【ログイン】

CPUを作ろう ~計算機教材とマイコンと電子工作~

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時計の動画


Copyright (c) 1997-2018 Rakuten, Inc. All Rights Reserved.