Menu
CoddyTech

Relógio NeoPixel: Segundos

Parte da seção Projetos do Journey de Arduino da Coddy. Lição 21 de 24.

O último projeto é um relógio sem números: um anel de 12 NeoPixels, como as 12 horas no mostrador de um relógio, com cada ponteiro sendo uma luz colorida. O pixel 0 fica no topo, na posição das 12 horas, e os números seguem no sentido horário. Dois botões ajustarão a hora.

Primeiro, o ponteiro dos segundos. Um minuto tem 60 segundos e o anel tem 12 pixels, então o ponteiro avança um pixel a cada 5 segundos.

seconds % 60 conta de 0 a 59 e depois recomeça em 0, como os segundos em um relógio. A divisão inteira por 5 transforma 0 a 59 em 0 a 11:

unsigned long seconds = millis() / 1000;
int secondPixel = (seconds % 60) / 5;

A cada passagem de loop(), desenhe o anel do zero: ring.clear(), defina o pixel do ponteiro, ring.show(). Sem limpar, as posições antigas continuam acesas e o anel fica todo iluminado. Dez atualizações por segundo são mais do que suficientes, então o código inicial termina com delay(100).

challenge icon

Desafio

Médio

O anel está no pino 6. Desenhe o ponteiro dos segundos:

  • calcule os segundos desde que o dispositivo foi ligado com millis() / 1000
  • o pixel do ponteiro é (seconds % 60) / 5
  • limpe o anel, acenda esse pixel em azul com ring.Color(0, 0, 255) e mostre-o

Mantenha o delay(100). Pressione Run e observe o ponteiro dar uma volta; em seguida, Check.

Experimente você mesmo

#include <Adafruit_NeoPixel.h>

const int ringPin = 6;
const int pixelCount = 12;
Adafruit_NeoPixel ring(pixelCount, ringPin, NEO_GRB + NEO_KHZ800);

void setup() {
  ring.begin();
}

void loop() {
  // calcule a posição do ponteiro dos segundos e desenhe-o em azul

  delay(100);  // redesenhe dez vezes por segundo
}
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 Projetos

Pratique por conta própria: Playground de Arduino