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

Analog-Style LED Persistence-of-Vision Uhr – DIY Arduino Nano Projekt

Benötigte Komponenten

Arduino Nano R3 × 1
LED (generic) × 17
Hall-Effekt-Sensor × 1
Widerstand 100 Ω × 17
DC-Motor (generic) × 1
Boost/Step-Up Wandler (Fixed) × 1

Werkzeuge

Software

Funktionsprinzip: Persistence of Vision (POV)

POV-Displays nutzen die Nachbildwirkung des menschlichen Auges. Eine rotierende LED-Leiste zeigt nacheinander Bildzeilen an – das Gehirn setzt sie zu einem stehenden Bild zusammen. Hier: 16 LEDs auf einem rotierenden Arm + 1 LED für den inneren Kreis.

LED-Gruppierung

Mechanik & Stromversorgung

Synchronisation

Hall-Sensor + Magnet am festen Teil detektiert jede Umdrehung → Referenzpunkt (12-Uhr-Position). Im Code: Warten auf Hall-Signal, dann 60 Sektoren (Minuten) durchlaufen mit delayMicroseconds für Pixelbreite und Lücken.

Code

// ArduinoNanoPropellerLEDAnalogClock
int LED[16] = {2,3,4,5,6,7,8,9,10,11,12,A1,A2,A3,A4,A5};
int sensorPin = A0;

unsigned long previousTime = 0;
byte hours = 12, minutes = 15, seconds = 0;

void setup() {
  for (int i=0; i<16; i++) pinMode(LED[i], OUTPUT);
  pinMode(sensorPin, INPUT_PULLUP);
  if (hours == 12) hours = 0;
}

void loop() {
  // Auf Hall-Sensor (LOW = Magnet erkannt)
  int val = digitalRead(sensorPin);
  while (val == LOW) val = digitalRead(sensorPin);

  // Uhrzeit hochzählen (jede Sekunde)
  if (millis() >= previousTime) {
    previousTime += 1000;
    if (++seconds == 60) { seconds = 0; if (++minutes == 60) { minutes = 0; if (++hours == 12) hours = 0; } }
  }

  // 60 Sektoren (Minutenpositionen) anzeigen
  int propeller_posn = 30; // Startoffset
  for (int n=0; n<60; n++) {
    drawMinuteMarker();        // LED16: jeder Minutenstrich
    if (propeller_posn % 5 == 0) drawHourMarker();      // LED14+15: Stundenstriche
    if (propeller_posn % 15 == 0) drawQuarterMarker();  // LED12+13: Viertelstunden
    if (propeller_posn == hours*5 || (propeller_posn==0 && hours==0)) drawHoursHand();   // LED1-7
    if (propeller_posn == minutes) drawMinutesHand();     // LED1-9
    if (propeller_posn == seconds) drawSecondsHand();     // LED1-11

    delayMicroseconds(140);  // Pixelbreite (an Motordrehzahl anpassen!)
    displayClear();
    drawInner_Circle();      // LED1 kurz für Mittelpunkt
    delayMicroseconds(600);  // Lücke zwischen Pixeln

    propeller_posn++;
    if (propeller_posn == 60) propeller_posn = 0;
    val = digitalRead(sensorPin);
    while (val == HIGH) val = digitalRead(sensorPin);
  }
}

// Hilfsfunktionen: displayClear, drawMinuteMarker, drawHourMarker, drawQuarterMarker,
// drawHoursHand, drawMinutesHand, drawSecondsHand, drawInner_Circle
// (siehe Originalcode für Details)

Einstellung der Timing-Werte

delayMicroseconds(140) und delayMicroseconds(600) hängen von der Motordrehzahl ab. Langsamer Motor → Werte erhöhen, schnellerer Motor → Werte verringern. Am besten per Try-and-Error einstellen bis das Bild stabil steht.

Schaltplan

Siehe Bild: 16 LEDs an D2–D12, A1–A5 mit je 100Ω an GND. Hall-Sensor an A0 (Pullup). Motor extern, Step-Up für Arduino-Versorgung.

Herausforderungen

Herstellungsprozess

  1. LED-Sequenzer mit 555-Timer & 4017-Zähler bauen – Frequenzteilung & Entprellung
  2. Kuckucksuhr: Geschichte, Handwerkskunst und moderne Evolution
  3. Eigenen LUMAZOID bauen: DIY Arduino Musik-Visualisierer
  4. Arduino POV-Uhr: Persistence-of-Vision LED-Display selbst bauen
  5. Präzise Druck- & Luftstrommessung mit analogem Sensor und Arduino
  6. 37-LED-Roulette-Spiel mit Arduino Nano bauen – Europäisches Layout
  7. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  8. 3D RGB Arduclock – Bluetooth-LED-Uhr mit Echtzeituhr
  9. Kompaktes Trim-Rad für FlightGear mit Arduino Nano
  10. Interaktive LED-Matrix Tür-Anzeige mit PIR-Bewegungssensor – Arduino Feiertagsgruß