Menu
CoddyTech

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

Desafío

Intermedio

Pinta 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() {
}
quiz iconPonte a prueba

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