USB-LED-Lüfteruhr mit Arduino Nano bauen – Schaltplan & Code
USB-LED-Lüfter-Analoguhr mit Arduino NANO – Projektcode & Schaltplan mit Zeiteinstellung
Wer das Video zum Mini-USB-LED-Lüfteruhr-Gadget kennt, baut hier die gleiche Propeller-Anzeige-Uhr nach: Basis Arduino NANO, Hallsensor, Widerstände, Akku, DC-Motor und LEDs.
Die LEDs rotieren kreisförmig und zeigen eine Analoguhr mit Stunden-, Minuten- und Sekundenzeiger sowie runden Ziffernblatt – wie eine normale Armband- oder Wanduhr.
Das Besondere: Die Zeit (Minuten & Sekunden) lässt sich per Quellcode-Upload via USB-Kabel auf den Arduino NANO einstellen. So geht’s:

Benötigte Bauteile
- Arduino NANO
- Hallsensor W130
- R1–R16 = 330 Ω
- R17 = 2,2 kΩ
- R18 = 10 kΩ
- LED 1–11 = Rot
- LED 12–16 = Grün
- LED 17 = Blau
- Akku = 3,7 V, 240 mAh (bei starkem Motor für hohe Drehzahl: 9–12 V)
- Schalter = Einpoliger Schiebeschalter (Ein/Aus)
- Sonstiges: Lochrasterplatine, Spielzeug-DC-Motor, Kabel, Lötkolben etc.
Verdrahtung & Schaltplan
Folgender Schaltplan gilt für die USB-Propeller-LED-Lüfteruhr. Für die Version mit Zeiteinstellung siehe zweiten Schaltplan am Ende.

Aufbau-Schritte
- Kleines Stück Lochrasterplatine zuschneiden.
- Grüne LED (langes Bein links) einstecken; auf Kupferseite Beine zur Seite biegen (LED 12–16 via R12–R16 an A5–A1).
- Rote LEDs (LED 1–11 via R1–R11 an D2–D12) ebenso einstecken.
- Blaue LED über den grünen LEDs platzieren (LED 17 via R17=2,2 kΩ an A7). Kathode der blauen LED mit Kathoden der anderen LEDs verbinden. Anode über R17 an Arduino +5 V.
- Alle LED-Kathoden zusammenlöten; überstehende Drähte abschneiden.
- Widerstände einstecken, Beine biegen, überstehende Enden kürzen.
- Alles laut Schaltplan verlöten.
- Arduino-NANO-Steckverbinder anlöten.
- Gemeinsame Kathodenleitung an Arduino GND anschließen.
Widerstände an Arduino-Pins anschließen:
- R1–R11 → D2–D12
- R12–R16 → A1–A5
Hallsensor anschließen:
- Ausgang → Arduino A0
- VCC → Arduino +5 V
- GND → Arduino GND
- 3,7-V/240-mAh-Akku laut Schaltplan anschließen; Einpol-Schiebeschalter in Plusleitung für Ein/Aus.
- Gesamtes Projekt auf Trägerplatte mit Spielzeug-DC-Motor montieren. Bei starkem Motor (hohe Drehzahl) 9–12 V Akku verwenden.
- Projektcode (unten) per USB-Kabel aufspielen, Schalter einschalten → Lüfter zeigt Uhrzeit im Propellerbetrieb.
Projektcode
Den folgenden Quellcode bei Bedarf anpassen (Zeiteinstellung) und per USB auf den Arduino NANO laden.
Code via: hobbyprojects
int 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; int minuteSensor = A7; int hourSensor = A6; unsigned int n,ADCvalue,propeller_posn; unsigned long previousTime = 0; byte hours = 12; // Stunden einstellen byte minutes = 15; // Minuten einstellen byte seconds = 00; // Sekunden einstellen int 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; //**************************************** // IR-Sensor-Test auskommentieren /* Serial.begin(9600); while(1) { ADCvalue = analogRead(minuteSensor); Serial.print("minuteSensor "); Serial.println(ADCvalue); ADCvalue = analogRead(hourSensor); Serial.print("hourSensor "); Serial.println(ADCvalue); Serial.println(); delay(1000); } */ //**************************************** } void loop() { val = digitalRead(sensorPin); while (val == LOW) { val = digitalRead(sensorPin); } if (millis() >= (previousTime)) { previousTime = previousTime + 1000; seconds = seconds+1; if (seconds == 60) { seconds = 0; minutes = minutes+1; } if (minutes == 60) { minutes = 0; hours = hours+1; } if (hours == 12) { hours = 0; } } propeller_posn=30; n=0; while(n < 60) { ADCvalue = analogRead(minuteSensor); if(ADCvalue < 500) { minutes = propeller_posn; seconds = 0; } ADCvalue = analogRead(hourSensor); if(ADCvalue < 500) { hours = propeller_posn/5; seconds = 0; } 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 == hours*5) || (( propeller_posn == 0 ) && (hours == 0))) drawHoursHand(); if(propeller_posn == minutes) drawMinutesHand(); if(propeller_posn == seconds) drawSecondsHand(); delayMicroseconds(100); // LED-Pixelbreite (an Motor-Drehzahl anpassen: Erhöhen bei niedriger, verringern bei hoher Drehzahl) displayClear(); drawInner_Circle(); delayMicroseconds(450); // Abstand zwischen LED-Pixeln/Minutenmarken (an Motor-Drehzahl anpassen) 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); }
Zeiteinstellung an der LED-Lüfteruhr ändern
Für einfachen IR-Empfänger im Hauptkreis
Zusatzbauteile:
- R19 & R20 = 10 kΩ
- IR-Fototransistor (nahe LED#13 für Minuteneinstellung)
- IR-Fototransistor (nahe LED#16 für Stundeneinstellung)
R19 mit erstem IR-LED (Minute) und R20 mit zweitem IR (Stunde) verbinden. Gemeinsame Anschlüsse der IR-LEDs und Widerstände an GND bzw. 5 V des Arduino NANO. Jumper von A7 zwischen R19 und zweitem IR; gleichermaßen A6 zu R20 und erstem IR.

Für einfache IR-Fernbedienung (Sender)
Bauteile:
- 9-V-Blockbatterie + Clip
- IR-LED (Infrarot)
- 1 kΩ Widerstand
- Taster
- Lochrasterplatine
Alle Bauteile in Reihe schalten (9 V, IR-LED, 1 kΩ, Taster an Pluspol). Sender auf LED#13 (Minute) bzw. LED#16 (Stunde) richten und Taster drücken.
Folgender Codeausschnitt steuert die Zeiteinstellung:
propeller_posn=30; n=0; while(n < 60) { ADCvalue = analogRead(minuteSensor); if(ADCvalue < 500) { minutes = propeller_posn; seconds = 0; } ADCvalue = analogRead(hourSensor); if(ADCvalue < 500) { hours = propeller_posn/5; seconds = 0; }
Bedienung: IR-Sender auf Minutenmarkierung richten & Taster drücken → Minutenzeiger setzt sich. Auf Stundenmarkierung richten & drücken → Stundenzeiger setzt sich.
Serieller Monitor: Normallicht > 500, IR-Licht < 500 → Schwellenwert im Code anpassen.
Video ansehen | Ressourcen: Gadget, Bausätze, Arduino NANO
Industrietechnik
- LED-Sequenzer mit 555-Timer & 4017-Zähler bauen – Frequenzteilung & Entprellung
- Arduino POV-Uhr: Persistence-of-Vision LED-Display selbst bauen
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
- Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung
- Zuverlässigen Arduino-Countdown-Timer mit SparkFun 7-Segment-Display bauen
- Arduino Flip Clock mit 8×8 LED-Matrix – DIY Echtzeituhr-Projekt
- RC Porsche selbst bauen: Arduino-Schritt-für-Schritt-Anleitung
- DIY USB-Trackpad aus altem Laptop – Arduino Micro als HID-Schnittstelle
- Professionelle LED-Nachtlampe 230V/50Hz & 110V/60Hz – Schaltplan für Netzbetrieb