Menu
CoddyTech

Reloj NeoPixel: segundos

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

El último proyecto es un reloj sin números: un anillo de 12 NeoPixels, como las 12 horas de la esfera de un reloj, donde cada manecilla es una luz de color. El píxel 0 está arriba, en las 12, y los números avanzan en sentido horario. Dos botones permitirán ajustar la hora.

Primero, la manecilla de los segundos. Un minuto tiene 60 segundos y el anillo tiene 12 píxeles, así que la manecilla avanza un píxel cada 5 segundos.

seconds % 60 cuenta de 0 a 59 y después vuelve a empezar en 0, como los segundos de un reloj. La división entera entre 5 convierte de 0 a 59 en 0 a 11:

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

En cada iteración de loop(), dibuja el anillo desde cero: ring.clear(), establece el píxel de la manecilla y ring.show(). Si no lo borras, las posiciones anteriores permanecen encendidas y el anillo se va llenando. Diez redibujos por segundo son más que suficientes, así que el programa inicial termina con delay(100).

challenge icon

Desafío

Intermedio

El anillo está en el pin 6. Dibuja la manecilla de los segundos:

  • calcula los segundos desde el encendido con millis() / 1000
  • el píxel de la manecilla es (seconds % 60) / 5
  • borra el anillo, ilumina ese píxel de color azul con ring.Color(0, 0, 255) y muéstralo

Conserva delay(100). Pulsa Run y observa cómo gira la manecilla; 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() {
  // calcula dónde está la manecilla de los segundos y dibújala en azul

  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