NeoPixel-Uhr: Minuten
Teil des Abschnitts Projekte der Arduino-Journey von Coddy. Lektion 22 von 24.
Der Uno kennt die Tageszeit nicht: millis() zählt nur ab dem Einschalten. Daher startet der Sketch die Uhr mit einer darin festgelegten Zeit und addiert die seit dem Einschalten vergangenen Sekunden. Im letzten Schritt werden Schaltflächen hinzugefügt, um die Uhrzeit einzustellen.
Speichere die Uhrzeit als eine Zahl: die Sekunden seit Mitternacht. 10:24:50 sind 10 Stunden, 24 Minuten und 50 Sekunden:
const unsigned long startTime = 10 * 3600UL + 24 * 60 + 50;
unsigned long now = startTime + millis() / 1000;Das UL hinter 3600 sorgt dafür, dass die Summe ein unsigned long ist. Ohne dieses Kürzel rechnet das Board mit int, das nur bis 32767 reicht, und 10 mal 3600 passt nicht hinein.
Sekunden und Minuten sind Reste, daher beginnt jeder Wert wieder bei 0, wenn er 60 erreicht:
int seconds = now % 60;
int minutes = (now / 60) % 60;Der Minutenzeiger bewegt sich außerdem alle 5 Minuten um ein Pixel, minutes / 5, und wird grün gezeichnet.
Aufgabe
MittelFüge den Minutenzeiger hinzu:
- die Uhr startet um 10:24:50:
startTimein Sekunden seit Mitternacht nowiststartTimeplus die Sekunden seit dem Einschalten- Sekundenzeiger:
(now % 60) / 5, blau - Minutenzeiger:
((now / 60) % 60) / 5, grünring.Color(0, 255, 0)
Drücke Run: um 10:25 rückt der Minutenzeiger weiter. Danach Check.
Probier es selbst
#include <Adafruit_NeoPixel.h>
const int ringPin = 6;
const int pixelCount = 12;
Adafruit_NeoPixel ring(pixelCount, ringPin, NEO_GRB + NEO_KHZ800);
void setup() {
ring.begin();
}
void loop() {
unsigned long seconds = millis() / 1000; // Sekunden seit dem Einschalten
int secondPixel = (seconds % 60) / 5; // ein Pixel für jeweils 5 Sekunden
ring.clear();
ring.setPixelColor(secondPixel, ring.Color(0, 0, 255));
ring.show();
delay(100); // zehnmal pro Sekunde neu zeichnen
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Projekte
3Einparkhilfe
Einparkhilfe: AbstandEinparkhilfe: LichterEinparkhilfe: SignaltöneEinparkhilfe: Anzeige6NeoPixel-Uhr
NeoPixel-Uhr: SekundenNeoPixel-Uhr: MinutenNeoPixel-Uhr: Zeiger mischenNeoPixel-Uhr: Uhrzeit einstellenÜbe selbstständig: Arduino-Playground