アナログスタイルのLEDPOVクロック
コンポーネントと消耗品
> | | × | 1 | |
| | × | 17 | |
| | × | 1 | |
| | × | 17 | |
| | × | 1 | |
| ブースト(ステップアップ)スイッチングレギュレータ、固定 | | × | 1 | |
アプリとオンラインサービス
> | | |
このプロジェクトについて
視覚現象(POV)ディスプレイは、一般にLEDディスプレイであり、特定の時間に画像の一部をすばやく連続して表示することで画像を「表示」します。人間の脳はこれを連続画像の表示として認識します。
「ホビープロジェクト」のウェブサイトでは、この比較的シンプルで視覚的に効果的なアナログスタイルのフェイスクロックが紹介されています。電子部品には、Arduino Nano 17LEDダイオードとホール効果センサーが含まれています。 LEDダイオードグループd1-d11、d12-d16、およびd17は、視覚効果を高めるために異なる色になっています。このデバイスは、ステップアップコンバーターを介してリチウムイオン電池から電力を供給されます。
私にとってプロジェクトの最も困難な部分は、機械的な安定性でした。最初の試みでは、バッテリーは偏心して設定され、より高速の回転で大きな振動がありました。次に、変更を加えて、バッテリーを回転の中心に置きました。
<図>
回転には可変電源に接続された12Vの電気モーターを使用しているので、デバイスの回転速度を簡単に制御できます。デバイスの回転速度に応じて、コードで「delayMicroseconds」の値を決定された値に設定する必要があります。
この目的のために、1秒あたりのフレーム数がより優れたカメラが必要なため、提示されたビデオは十分に明確ではありません。
コード
コード Arduino
// hobbyprojects // ArduinoNanoPropellerLEDAnalogClock20190403Aint LED1 =2; int LED2 =3; int LED3 =4; int LED4 =5; int LED5 =6; int LED6 =7; int LED7 =8; int LED8 =9; int LED9 =10; int LED10 =11; int LED11 =12; int LED12 =A1; int LED13 =A2; int LED14 =A3; int LED15 =A4; int LED16 =A5; int SensorPin =A0; unsigned int n、ADCvalue、propeller_posn; unsigned long previousTime =0;バイト時間=12; // hoursbyte分を設定=15; // minutesbyte秒を設定=00; // secondsintを設定しますval; void setup(){pinMode(LED1、OUTPUT); pinMode(LED2、OUTPUT); pinMode(LED3、OUTPUT); pinMode(LED4、OUTPUT); pinMode(LED5、OUTPUT); pinMode(LED6、OUTPUT); pinMode(LED7、OUTPUT); pinMode(LED8、OUTPUT); pinMode(LED9、OUTPUT); pinMode(LED10、OUTPUT); pinMode(LED11、OUTPUT); pinMode(LED12、OUTPUT); pinMode(LED13、OUTPUT); pinMode(LED14、OUTPUT); pinMode(LED15、OUTPUT); pinMode(LED16、OUTPUT); pinMode(sensorPin、INPUT_PULLUP); if(hours ==12)hours =0;} void loop(){val =digitalRead(sensorPin); while(val ==LOW){val =digitalRead(sensorPin); } if(millis()> =(previousTime)){previousTime =previousTime + 1000;秒=秒+1; if(seconds ==60){seconds =0;分=分+1; } if(minutes ==60){minutes =0;時間=時間+1; } if(hours ==12){hours =0; }} propeller_posn =30; n =0; while(n <60){drawMinuteMarker(); if((propeller_posn ==0)||(propeller_posn ==5)||(propeller_posn ==10)||(propeller_posn ==15)||(propeller_posn ==20)||(propeller_posn ==25)|| (propeller_posn ==30)||(propeller_posn ==35)||(propeller_posn ==40)||(propeller_posn ==45)||(propeller_posn ==50)||(propeller_posn ==55))drawHourMarker(); if((propeller_posn ==0)||(propeller_posn ==15)||(propeller_posn ==30)||(propeller_posn ==45))drawQuarterMarker(); if((propeller_posn ==時間* 5)||((propeller_posn ==0)&&(時間==0)))drawHoursHand(); if(propeller_posn ==minutes)drawMinutesHand(); if(propeller_posn ==seconds)drawSecondsHand(); delayMicroseconds(140); // LEDピクセル幅の場合(モーター速度に応じて値を変更します。低速の場合は増加し、高速モーターの場合は減少します)displayClear(); drawInner_Circle(); delayMicroseconds(600); // LEDピクセル/分マーカー間のギャップの場合(モーター速度に応じて値を変更します。低速の場合は増加し、高速モーターの場合は減少します)n ++; propeller_posn ++; if(propeller_posn ==60)propeller_posn =0; } val =digitalRead(sensorPin); while(val ==HIGH){val =digitalRead(sensorPin); }} // =========================void displayClear(){digitalWrite(LED1、LOW); digitalWrite(LED2、LOW); digitalWrite(LED3、LOW); digitalWrite(LED4、LOW); digitalWrite(LED5、LOW); digitalWrite(LED6、LOW); digitalWrite(LED7、LOW); digitalWrite(LED8、LOW); digitalWrite(LED9、LOW); digitalWrite(LED10、LOW); digitalWrite(LED11、LOW); digitalWrite(LED12、LOW); digitalWrite(LED13、LOW); digitalWrite(LED14、LOW); digitalWrite(LED15、LOW); digitalWrite(LED16、LOW); } void drawMinuteMarker(){digitalWrite(LED16、HIGH); } void drawHourMarker(){digitalWrite(LED15、HIGH); digitalWrite(LED14、HIGH); } void drawQuarterMarker(){digitalWrite(LED13、HIGH); digitalWrite(LED12、HIGH); } void drawHoursHand(){digitalWrite(LED1、HIGH); digitalWrite(LED2、HIGH); digitalWrite(LED3、HIGH); digitalWrite(LED4、HIGH); digitalWrite(LED5、HIGH); digitalWrite(LED6、HIGH); digitalWrite(LED7、HIGH); } void drawMinutesHand(){digitalWrite(LED1、HIGH); digitalWrite(LED2、HIGH); digitalWrite(LED3、HIGH); digitalWrite(LED4、HIGH); digitalWrite(LED5、HIGH); digitalWrite(LED6、HIGH); digitalWrite(LED7、HIGH); digitalWrite(LED8、HIGH); digitalWrite(LED9、HIGH); } void drawSecondsHand(){digitalWrite(LED1、HIGH); digitalWrite(LED2、HIGH); digitalWrite(LED3、HIGH); digitalWrite(LED4、HIGH); digitalWrite(LED5、HIGH); digitalWrite(LED6、HIGH); digitalWrite(LED7、HIGH); digitalWrite(LED8、HIGH); digitalWrite(LED9、HIGH); digitalWrite(LED10、HIGH); digitalWrite(LED11、HIGH); } void drawInner_Circle(){digitalWrite(LED1、HIGH); delayMicroseconds(30); digitalWrite(LED1、LOW); }
回路図