Menu
CoddyTech

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();
challenge icon

Sfida

Medio

Disegna 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() {
}
quiz iconMettiti alla prova

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