Menu
CoddyTech

Zegar NeoPixel: sekundy

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

Ostatni projekt to zegar bez cyfr: pierścień z 12 diodami NeoPixel, jak 12 godzin na tarczy zegara, gdzie każda wskazówka jest kolorowym światłem. Piksel 0 znajduje się na górze, na godzinie 12, a kolejne numery biegną zgodnie z ruchem wskazówek zegara. Dwa przyciski będą służyć do ustawiania godziny.

Najpierw wskazówka sekundowa. Minuta ma 60 sekund, a pierścień 12 pikseli, więc wskazówka przesuwa się o jeden piksel co 5 sekund.

seconds % 60 zlicza od 0 do 59, a potem zaczyna od 0, tak jak sekundy na zegarze. Dzielenie całkowite przez 5 zamienia zakres od 0 do 59 na zakres od 0 do 11:

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

Przy każdym przebiegu loop() narysuj pierścień od nowa: ring.clear(), ustaw piksel wskazówki, ring.show(). Bez czyszczenia poprzednie pozycje pozostają podświetlone i pierścień się zapełnia. Dziesięć odświeżeń na sekundę w zupełności wystarczy, więc kod startowy kończy się na delay(100).

challenge icon

Wyzwanie

Średni

Pierścień jest podłączony do pinu 6. Narysuj wskazówkę sekundową:

  • oblicz liczbę sekund od włączenia zasilania za pomocą millis() / 1000
  • piksel wskazówki to (seconds % 60) / 5
  • wyczyść pierścień, zaświeć ten piksel na niebiesko za pomocą ring.Color(0, 0, 255) i wyświetl go

Zostaw delay(100). Naciśnij Run i obserwuj, jak wskazówka się obraca, a następnie naciśnij 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() {
  // ustal położenie wskazówki sekundowej i narysuj ją na niebiesko

  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