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.
Wyzwanie
ŚredniDodaj wskazówkę minutową:
- zegar zaczyna działać o 10:24:50:
startTimew sekundach od północy nowtostartTimeplus liczba sekund od włączenia zasilania- wskazówka sekundowa:
(now % 60) / 5, niebieska - wskazówka minutowa:
((now / 60) % 60) / 5, zielonaring.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ę
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Projekty
3Czujnik parkowania
Czujnik parkowania: odległośćCzujnik parkowania: światłaCzujnik parkowania: sygnały dźwiękoweCzujnik parkowania: wyświetlacz6Zegar NeoPixel
Zegar NeoPixel: sekundyZegar NeoPixel: minutyZegar NeoPixel: mieszanie wskazówekZegar NeoPixel: ustawianie godzinyPoćwicz samodzielnie: Edytor online Arduino