Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Analoge LED-POV-Uhr

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
LED (generisch)
× 17
Hall-Effekt-Sensor
× 1
Widerstand 100 Ohm
× 17
DC-Motor (generisch)
× 1
Boost (Step Up) Schaltregler, fest
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Persistence of Vision (POV)-Displays sind im Allgemeinen LED-Displays, die Bilder „zeigen“, indem sie einen Bildausschnitt zu einem bestimmten Zeitpunkt in schneller, schneller Abfolge anzeigen. Das menschliche Gehirn nimmt dies als Anzeige eines kontinuierlichen Bildes wahr.

Auf der Website "Hobby-Projekt" wird diese relativ einfache, aber optisch wirksame Uhr im analogen Stil vorgestellt. Der elektronische Teil enthält die Arduino Nano 17 LED-Dioden und den Hall-Effekt-Sensor. Die LED-Diodengruppen d1-d11, d12-d16 und d17 haben unterschiedliche Farben für einen besseren visuellen Effekt. Das Gerät wird über einen Aufwärtswandler mit einer Lithium-Ionen-Batterie betrieben.

Der schwierigste Teil der Projekte war für mich die mechanische Stabilität. Im ersten Versuch wurde der Akku exzentrisch gesetzt und bei höherer Drehzahl gab es eine gewaltige Vibration. Dann habe ich eine Modifikation vorgenommen und den Akku in das Drehzentrum gelegt.

Für die Rotation verwende ich einen 12V-Elektromotor, der an eine variable Stromversorgung angeschlossen ist, damit die Rotationsgeschwindigkeit des Geräts leicht gesteuert werden kann. Abhängig von der Rotationsgeschwindigkeit des Geräts müssen Sie im Code den Wert von "delayMicroseconds" auf einen bestimmten Wert einstellen.

Das präsentierte Video ist nicht klar genug, da ich dafür eine Kamera mit besseren Bildern pro Sekunde benötige.

Code

  • Code
codeArduino
// 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;Byte Stunden =12; // setze Stundenbyte Minuten =15; // setze minutenbyte sekunden =00; // setze secondint val;void setup () {pinMode (LED1, OUTPUT); PinMode (LED2, AUSGANG); PinMode (LED3, AUSGANG); PinMode (LED4, AUSGANG); PinMode (LED5, AUSGANG); PinMode (LED6, AUSGANG); PinMode (LED7, AUSGANG); PinMode (LED8, AUSGANG); PinMode (LED9, AUSGANG); PinMode (LED10, AUSGANG); PinMode (LED11, AUSGANG); PinMode (LED12, AUSGANG); PinMode (LED13, AUSGANG); PinMode (LED14, AUSGANG); PinMode (LED15, AUSGANG); PinMode (LED16, AUSGANG); pinMode (sensorPin, INPUT_PULLUP); if (hours ==12) hours =0;}void loop () { val =digitalRead (sensorPin); während (val ==LOW) {val =digitalRead (sensorPin); aufrechtzuerhalten. Wenn (millis()>=(vorherigeZeit)) {vorherigeZeit =vorherigeZeit + 1000; Sekunden =Sekunden+1; wenn (Sekunden ==60) { Sekunden =0; Minuten =Minuten+1; } if (Minuten ==60) { Minuten =0; Stunden =Stunden+1; } Wenn (Stunden ==12) { Stunden =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 ==Stunden*5) || ((propeller_posn ==0 ) &&(Stunden ==0))) drawHoursHand(); if(propeller_posn ==Minuten) drawMinutesHand(); if(propeller_posn ==Sekunden) drawSecondsHand(); VerzögerungMikrosekunden(140); // für LED-Pixelbreite (Ändern Sie den Wert entsprechend der Motorgeschwindigkeit. Erhöhen Sie für niedrige Geschwindigkeit, verringern Sie für einen schnellen Motor) displayClear (); drawInner_Circle(); VerzögerungMikrosekunden (600); // für die Lücke zwischen LED-Pixel / Minutenmarkierungen (Ändern Sie den Wert entsprechend der Motordrehzahl. Erhöhen Sie für niedrige Drehzahlen, verringern Sie sie für einen schnellen Motor) n++; Propeller_posn++; if(propeller_posn ==60) Propeller_posn=0; } val =digitalRead (sensorPin); während (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); aufrechtzuerhalten. Void drawMinuteMarker () { DigitalWrite (LED16, HIGH); aufrechtzuerhalten. Void drawHourMarker () { DigitalWrite (LED15, HIGH); digitalWrite (LED14, HOCH); aufrechtzuerhalten. Void drawQuarterMarker () { DigitalWrite (LED13, HIGH); digitalWrite (LED12, HOCH); aufrechtzuerhalten. Void drawHoursHand () { DigitalWrite (LED1, HIGH); digitalWrite (LED2, HOCH); digitalWrite (LED3, HOCH); digitalWrite (LED4, HOCH); digitalWrite (LED5, HOCH); digitalWrite (LED6, HOCH); digitalWrite (LED7, HOCH); aufrechtzuerhalten. Void drawMinutesHand () { DigitalWrite (LED1, HIGH); digitalWrite (LED2, HOCH); digitalWrite (LED3, HOCH); digitalWrite (LED4, HOCH); digitalWrite (LED5, HOCH); digitalWrite (LED6, HOCH); digitalWrite (LED7, HOCH); digitalWrite (LED8, HOCH); digitalWrite (LED9, HOCH); aufrechtzuerhalten. Void drawSecondsHand () { DigitalWrite (LED1, HIGH); digitalWrite (LED2, HOCH); digitalWrite (LED3, HOCH); digitalWrite (LED4, HOCH); digitalWrite (LED5, HOCH); digitalWrite (LED6, HOCH); digitalWrite (LED7, HOCH); digitalWrite (LED8, HOCH); digitalWrite (LED9, HOCH); digitalWrite (LED10, HOCH); digitalWrite (LED11, HOCH); aufrechtzuerhalten. Void drawInner_Circle () { DigitalWrite (LED1, HIGH); VerzögerungMikrosekunden (30); digitalWrite (LED1, LOW); } 

Schaltpläne


Herstellungsprozess

  1. LED-Sequenzer
  2. Kuckucksuhr
  3. DIY LUMAZOID Arduino Music Visualiser
  4. Arduino-Pov-Vision-Uhr
  5. Druckluftstrom-Messgerät mit analogem Sensor
  6. DIY 37 LED-Roulette-Spiel
  7. Hauptuhr
  8. 3D RGB Arduclock
  9. FlightGear analoges Trimm-Tabrad
  10. LED-Matrix + Bewegungssensor-Türanzeige [Arduino Holiday]