Anello arcobaleno
Fa parte della sezione Display e sensori del percorso Arduino di Coddy. Lezione 17 di 24.
Scegliere rosso, verde e blu per un arcobaleno è difficile. La tonalità è più semplice: un numero che gira attorno alla ruota dei colori, dal rosso passando per giallo, verde, ciano, blu e magenta, e tornando al rosso.
ring.ColorHSV(hue) trasforma una tonalità in un colore. La tonalità va da 0 a 65535: 0 è rosso, circa 21845 è verde, circa 43690 è blu e 65536 sarebbe di nuovo rosso.
Per distribuire un arcobaleno su 16 pixel, assegna a ogni pixel un incremento di 65536 / 16 = 4096 rispetto al precedente. Il pixel 15 richiede 61440, un valore troppo grande per un int, quindi mantieni la tonalità in un long e scrivi il numero come 4096L; la L fa sì che anche la moltiplicazione usi long:
for (int i = 0; i < 16; i++) {
long hue = i * 4096L;
ring.setPixelColor(i, ring.ColorHSV(hue));
}
ring.show();Sfida
MedioDisegna un arcobaleno intorno all’anello:
- pixel 0 rosso (tonalità 0)
- ogni pixel successivo avanza di 4096 sulla ruota, con
ring.ColorHSV() - così i 16 pixel compiono un giro completo
Premi Esegui, poi Verifica.
Provalo tu
#include <Adafruit_NeoPixel.h>
// 16 pixel, dati sul pin 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);
void setup() {
ring.begin();
// assegna a ogni pixel una tonalità diversa, con il rosso al pixel 0
ring.show();
}
void loop() {
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Display e sensori
Esercitati da solo: Playground Arduino