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();Wyzwanie
ŚredniPomaluj 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() {
}
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
1Wyświetlacze siedmiosegmentowe
Wyświetlacz siedmiosegmentowyWzory cyfr w bajtachLiczenie na wyświetlaczuOdliczanie do zeraSymulator rzutu kostkąPoćwicz samodzielnie: Edytor online Arduino