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.
Desafío
IntermedioAñade la aguja de los minutos:
- el reloj empieza a las 10:24:50:
startTimeen segundos desde la medianoche nowesstartTimemás los segundos transcurridos desde el encendido- aguja de los segundos:
(now % 60) / 5, azul - aguja de los minutos:
((now / 60) % 60) / 5, verdering.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
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Proyectos
3Sensor de estacionamiento
Sensor de estacionamiento: distanciaSensor de estacionamiento: lucesSensor de estacionamiento: pitidosSensor de estacionamiento: pantalla6Reloj NeoPixel
Reloj NeoPixel: segundosReloj NeoPixel: minutosReloj NeoPixel: combinando las manecillasReloj NeoPixel: ajusta la horaPractica por tu cuenta: Playground de Arduino