Menu
CoddyTech

Relógio NeoPixel: Minutos

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

O Uno não sabe que horas são: millis() só conta a partir do momento em que é ligado. Então, o sketch inicia o relógio com um horário definido nele e soma os segundos desde que foi ligado. A última etapa adiciona botões para ajustá-lo.

Mantenha o horário como um único número: os segundos desde a meia-noite. 10:24:50 são 10 horas, 24 minutos e 50 segundos:

const unsigned long startTime = 10 * 3600UL + 24 * 60 + 50;
unsigned long now = startTime + millis() / 1000;

O UL após 3600 faz com que a soma seja um unsigned long. Sem ele, a placa multiplica usando int, que vai até 32767, e 10 vezes 3600 não cabe.

Os segundos e os minutos são restos, então cada um recomeça em 0 quando chega a 60:

int seconds = now % 60;
int minutes = (now / 60) % 60;

O ponteiro dos minutos também se move um pixel a cada 5 minutos, minutes / 5, e é desenhado em verde.

challenge icon

Desafio

Médio

Adicione o ponteiro dos minutos:

  • o relógio começa às 10:24:50: startTime em segundos desde a meia-noite
  • now é startTime mais os segundos desde que o dispositivo foi ligado
  • ponteiro dos segundos: (now % 60) / 5, azul
  • ponteiro dos minutos: ((now / 60) % 60) / 5, verde ring.Color(0, 255, 0)

Pressione Run: às 10:25 o ponteiro dos minutos avança. Depois, 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() {
  unsigned long seconds = millis() / 1000;  // segundos desde que foi ligado
  int secondPixel = (seconds % 60) / 5;     // um pixel a cada 5 segundos

  ring.clear();
  ring.setPixelColor(secondPixel, ring.Color(0, 0, 255));
  ring.show();
  delay(100);  // redesenha 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