Menu
CoddyTech

Anel arco-íris

Parte da seção Displays e sensores do Journey de Arduino da Coddy. Lição 17 de 24.

Escolher vermelho, verde e azul para um arco-íris é difícil. Matiz é mais fácil: um número que percorre o círculo de cores, do vermelho passando por amarelo, verde, ciano, azul e magenta, e voltando ao vermelho.

ring.ColorHSV(hue) transforma um matiz em uma cor. O matiz vai de 0 a 65535: 0 é vermelho, aproximadamente 21845 é verde, aproximadamente 43690 é azul, e 65536 seria vermelho novamente.

Para espalhar um arco-íris por 16 pixels, dê a cada pixel um incremento de 65536 / 16 = 4096 em relação ao anterior. O pixel 15 precisa de 61440, mais do que um int comporta, então mantenha o matiz em um long e escreva o número como 4096L; o L faz com que a multiplicação também use long:

for (int i = 0; i < 16; i++) {
  long hue = i * 4096L;
  ring.setPixelColor(i, ring.ColorHSV(hue));
}
ring.show();
challenge icon

Desafio

Médio

Pinte um arco-íris ao redor do anel:

  • pixel 0 vermelho (matiz 0)
  • cada próximo pixel avança 4096 posições na roda, com ring.ColorHSV()
  • assim, os 16 pixels dão uma volta completa

Pressione Executar e, em seguida, Verificar.

Experimente você mesmo

#include <Adafruit_NeoPixel.h>

// 16 pixels, dados no pino 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);

void setup() {
  ring.begin();

  // atribua a cada pixel sua própria tonalidade, com vermelho no pixel 0

  ring.show();
}

void loop() {
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Displays e sensores

Pratique por conta própria: Playground de Arduino