Menu
CoddyTech

NeoPixel-Uhr: Sekunden

Teil des Abschnitts Projekte der Arduino-Journey von Coddy. Lektion 21 von 24.

Das letzte Projekt ist eine Uhr ohne Zahlen: ein Ring aus 12 NeoPixels, wie die 12 Stunden auf einem Zifferblatt, wobei jeder Zeiger ein farbiges Licht ist. Pixel 0 befindet sich oben, bei 12 Uhr, und die Zahlen laufen im Uhrzeigersinn herum. Zwei Tasten stellen die Uhrzeit ein.

Zuerst der Sekundenzeiger. Eine Minute hat 60 Sekunden und der Ring hat 12 Pixel, also bewegt sich der Zeiger alle 5 Sekunden um ein Pixel weiter.

seconds % 60 zählt von 0 bis 59 und beginnt dann wieder bei 0, wie die Sekunden auf einer Uhr. Ganzzahldivision durch 5 wandelt 0 bis 59 in 0 bis 11 um:

unsigned long seconds = millis() / 1000;
int secondPixel = (seconds % 60) / 5;

Bei jedem Durchlauf von loop() zeichnest du den Ring von Grund auf neu: ring.clear(), den Pixel des Zeigers einschalten, ring.show(). Ohne das Löschen bleiben alte Positionen eingeschaltet und der Ring füllt sich. Zehn Neuzeichnungen pro Sekunde reichen völlig aus, daher endet das Starterprogramm mit delay(100).

challenge icon

Aufgabe

Mittel

Der Ring ist an Pin 6. Zeichne den Sekundenzeiger:

  • ermittle die Sekunden seit dem Einschalten mit millis() / 1000
  • das Pixel des Zeigers ist (seconds % 60) / 5
  • lösche den Ring, leuchte dieses Pixel blau mit ring.Color(0, 0, 255) auf und zeige es an

Behalte delay(100) bei. Drücke Run und beobachte, wie sich der Zeiger dreht, dann 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() {
  // Berechne die Position des Sekundenzeigers und zeichne ihn blau

  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