Menu
CoddyTech

Zegar NeoPixel: minuty

Część sekcji Projekty ścieżki Arduino w Coddy. Lekcja 22 z 24.

Uno nie zna pory dnia: millis() liczy czas tylko od włączenia zasilania. Dlatego szkic ustawia zegar na zapisaną w nim godzinę i dodaje sekundy, które upłynęły od włączenia zasilania. Ostatni krok dodaje przyciski do ustawiania godziny.

Zapisz godzinę jako jedną liczbę — liczbę sekund od północy. 10:24:50 to 10 godzin, 24 minuty i 50 sekund:

const unsigned long startTime = 10 * 3600UL + 24 * 60 + 50;
unsigned long now = startTime + millis() / 1000;

UL po 3600 sprawia, że suma ma typ unsigned long. Bez tego płytka wykonuje mnożenie w typie int, którego wartość kończy się na 32767, a 10 razy 3600 się w nim nie mieści.

Sekundy i minuty są resztami z dzielenia, więc każda z nich zaczyna się ponownie od 0 po osiągnięciu 60:

int seconds = now % 60;
int minutes = (now / 60) % 60;

Wskazówka minutowa przesuwa się też o jeden piksel co 5 minut — minutes / 5 — i jest rysowana na zielono.

challenge icon

Wyzwanie

Średni

Dodaj wskazówkę minutową:

  • zegar zaczyna działać o 10:24:50: startTime w sekundach od północy
  • now to startTime plus liczba sekund od włączenia zasilania
  • wskazówka sekundowa: (now % 60) / 5, niebieska
  • wskazówka minutowa: ((now / 60) % 60) / 5, zielona ring.Color(0, 255, 0)

Naciśnij Run: o 10:25 wskazówka minutowa przesunie się. Następnie kliknij Check.

Spróbuj swoich sił

#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;  // sekundy od włączenia zasilania
  int secondPixel = (seconds % 60) / 5;     // jeden piksel na każde 5 sekund

  ring.clear();
  ring.setPixelColor(secondPixel, ring.Color(0, 0, 255));
  ring.show();
  delay(100);  // odświeżaj dziesięć razy na sekundę
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Projekty

Poćwicz samodzielnie: Edytor online Arduino