Anillo arcoíris
Parte de la sección Pantallas y sensores del Journey de Arduino de Coddy. Lección 17 de 24.
Elegir rojo, verde y azul para un arcoíris es difícil. El tono es más fácil: un número que recorre el círculo cromático, del rojo al amarillo, verde, cian, azul y magenta, y vuelve al rojo.
ring.ColorHSV(hue) convierte un tono en un color. El tono va de 0 a 65535: 0 es rojo, aproximadamente 21845 es verde, aproximadamente 43690 es azul y 65536 volvería a ser rojo.
Para distribuir un arcoíris en 16 píxeles, dale a cada píxel un incremento de 65536 / 16 = 4096 con respecto al anterior. El píxel 15 necesita 61440, más de lo que cabe en un int, así que guarda el tono en un long y escribe el número como 4096L; la L hace que la multiplicación también use long:
for (int i = 0; i < 16; i++) {
long hue = i * 4096L;
ring.setPixelColor(i, ring.ColorHSV(hue));
}
ring.show();Desafío
IntermedioPinta un arcoíris alrededor del anillo:
- el píxel 0 rojo (tono 0)
- cada píxel siguiente, 4096 más adelante en la rueda, con
ring.ColorHSV() - así, los 16 píxeles dan una vuelta completa
Pulsa Ejecutar y después Comprobar.
Pruébalo tú mismo
#include <Adafruit_NeoPixel.h>
// 16 píxeles, datos en el pin 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);
void setup() {
ring.begin();
// asigna a cada píxel su propio tono, con rojo en el píxel 0
ring.show();
}
void loop() {
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Pantallas y sensores
Practica por tu cuenta: Playground de Arduino