Menu
CoddyTech

Reloj NeoPixel: minutos

Parte de la sección Proyectos del Journey de Arduino de Coddy. Lección 22 de 24.

El Uno no sabe qué hora del día es: millis() solo cuenta desde que se enciende. Así que el sketch inicia el reloj a una hora escrita en él y suma los segundos transcurridos desde que se enciende. El último paso añade botones para ajustarlo.

Guarda la hora como un solo número: los segundos transcurridos desde la medianoche. Las 10:24:50 son 10 horas, 24 minutos y 50 segundos:

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

El UL después de 3600 hace que la suma sea un unsigned long. Sin él, la placa multiplica en int, cuyo límite es 32767, y 10 por 3600 no cabe.

Los segundos y los minutos son restos, así que cada uno vuelve a empezar en 0 cuando llega a 60:

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

La aguja de los minutos también se mueve un píxel cada 5 minutos, minutes / 5, y se dibuja en verde.

challenge icon

Desafío

Intermedio

Añade la aguja de los minutos:

  • el reloj empieza a las 10:24:50: startTime en segundos desde la medianoche
  • now es startTime más los segundos transcurridos desde el encendido
  • aguja de los segundos: (now % 60) / 5, azul
  • aguja de los minutos: ((now / 60) % 60) / 5, verde ring.Color(0, 255, 0)

Pulsa Run: a las 10:25 la aguja de los minutos avanza. Después, pulsa Check.

Pruébalo tú mismo

#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 el encendido
  int secondPixel = (seconds % 60) / 5;     // un píxel por cada 5 segundos

  ring.clear();
  ring.setPixelColor(secondPixel, ring.Color(0, 0, 255));
  ring.show();
  delay(100);  // vuelve a dibujar diez veces por segundo
}
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 Proyectos

Practica por tu cuenta: Playground de Arduino