Menu
CoddyTech

Tęczowy pierścień

Część sekcji Wyświetlacze i czujniki ścieżki Arduino w Coddy. Lekcja 17 z 24.

Wybranie czerwonego, zielonego i niebieskiego koloru tęczy jest trudne. Odcień to prostsze rozwiązanie: jedna liczba, która porusza się po kole barw, od czerwieni przez żółty, zielony, cyjan, niebieski i magentę, a następnie wraca do czerwieni.

ring.ColorHSV(hue) zamienia odcień na kolor. Odcień mieści się w zakresie od 0 do 65535: 0 oznacza czerwony, około 21845 — zielony, około 43690 — niebieski, a 65536 ponownie oznaczałoby czerwony.

Aby rozciągnąć jedną tęczę na 16 pikseli, każdemu kolejnemu pikselowi przypisz wartość większą o 65536 / 16 = 4096 od wartości poprzedniego. Piksel 15 potrzebuje wartości 61440, która przekracza zakres typu int, więc przechowuj odcień w long i zapisz liczbę jako 4096L; L sprawia też, że mnożenie jest wykonywane jako long:

for (int i = 0; i < 16; i++) {
  long hue = i * 4096L;
  ring.setPixelColor(i, ring.ColorHSV(hue));
}
ring.show();
challenge icon

Wyzwanie

Średni

Pomaluj pierścień tęczą:

  • piksel 0 czerwony (odcień 0)
  • każdy kolejny piksel przesunięty o 4096 dalej wokół koła, za pomocą ring.ColorHSV()
  • dzięki temu 16 pikseli wykona jeden pełny obrót

Naciśnij Uruchom, a następnie Sprawdź.

Spróbuj swoich sił

#include <Adafruit_NeoPixel.h>

// 16 pikseli, dane na pinie 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);

void setup() {
  ring.begin();

  // nadaj każdemu pikselowi własny odcień, czerwony na pikselu 0

  ring.show();
}

void loop() {
}
quiz iconSprawdź się

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

Wszystkie lekcje w sekcji Wyświetlacze i czujniki

Poćwicz samodzielnie: Edytor online Arduino