Menu
CoddyTech

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.

challenge icon

Aufgabe

Mittel

Füge den Minutenzeiger hinzu:

  • die Uhr startet um 10:24:50: startTime in Sekunden seit Mitternacht
  • now ist startTime plus die Sekunden seit dem Einschalten
  • Sekundenzeiger: (now % 60) / 5, blau
  • Minutenzeiger: ((now / 60) % 60) / 5, grün ring.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
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Projekte

Übe selbstständig: Arduino-Playground