Tabla de contenido:
Video: Reloj de precisión: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Todos necesitamos relojes, así que, ¿por qué no hacer los suyos en este instructivo? Le mostraré cómo hacer un reloj de precisión, una vez que lo configure, realizará un seguimiento automático de la hora actual en el fondo de todo. Si bien también solo necesita muy pocos suministros y cero soldaduras.
Suministros
Primero, necesitará un Arduino pero cualquier Arduino funcionará
A continuación, necesitará una variedad de cables de puente genéricos.
2 interruptores de botón Sparkfun de 12 mm
Una placa de pruebas tradicional
y una pantalla LCD 1602 de 16 pines
Paso 1: cableado
Para que este reloj funcione, debe conectarlo de una manera muy específica o, de lo contrario, obtendrá un montón de números aleatorios en la pantalla en lugar de la hora.
Paso 2: el código
Dado que no estamos usando un RTC, el código será un poco largo, pero afortunadamente hice todo el trabajo duro por usted y lo proporcioné aquí.
Simplemente copie y pegue esto en Arduino IDE o en el editor web.
#include "LiquidCrystal.h"
// Esto define el cableado del LCD al DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
// Configuración de Constrast LCD digital int cs = 9; // pin 9 para contraste PWM const int contrast = 100; // contraste predeterminado
// La visualización de la hora inicial es 12:59:45 PM int h = 12; int m = 59; int s = 45; int bandera = 1; //PM
// Botones de ajuste de tiempo int button1; int button2;
// Definición de pines para botones de ajuste de tiempo int hs = 0; // pin 0 para ajuste de horas int ms = 1; // pin 1 para ajuste de minutos
// Tiempo de espera de luz de fondo const int Time_light = 150; int bl_TO = Time_light; // Tiempo de espera de la luz de fondo int bl = 10; // Pin de luz de fondo const int backlight = 120; // ¡¡¡No más de 7 mA !!!
// Para una lectura precisa de la hora, use Arduino Real Time Clock y no solo delay () static uint32_t last_time, now = 0; // RTC
configuración vacía () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // evitar resistencias pullup externas para el botón 1 pinMode (ms, INPUT_PULLUP); // y el botón 2 analogWrite (cs, contrast); // ajustar el contraste VO analogWrite (bl, backlight); // girar en Luz de fondo ahora = millis (); // leer el valor inicial de RTC}
void loop () {lcd.begin (16, 2); // cada segundo // Actualizar la pantalla LCD // Imprimir TIEMPO en horas, minutos, segundos + AM / PM lcd.setCursor (0, 0); lcd.print ("Hora"); if (h <10) lcd.print ("0"); // siempre 2 dígitos lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); si (s <10) lcd.print ("0"); lcd.print (s);
if (bandera == 0) lcd.print ("AM"); if (bandera == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // para la Línea 2 lcd.print ("Reloj de precisión");
// reemplazo mejorado de delay (1000) // Mucho mejor precisión, no más dependiente del tiempo de ejecución del bucle
for (int i = 0; i <5; i ++) // realiza un bucle de 200ms de 5 veces, para una respuesta del botón más rápida {
while ((ahora-última_hora) <200) // delay200ms {ahora = millis (); } // bucle interno de 200ms last_time = ahora; // prepárate para el siguiente ciclo
// leer los botones de configuración button1 = digitalRead (hs); // leer los botones button2 = digitalRead (ms);
// Tiempo de espera de la luz de fondo bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Luz de fondo apagada bl_TO ++; } // Pulsa cualquiera para activar la luz de fondo if (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, retroiluminación); // esperar hasta que se suelte el botón while ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // leer botones button2 = digitalRead (ms); }} else // Procesar el botón 1 o el botón 2 cuando se presiona mientras la luz de fondo está encendida {if (button1 == 0) {h = h + 1; bl_TO = Luz_tiempo; analogWrite (bl, retroiluminación); }
si (botón2 == 0) {s = 0; m = m + 1; bl_TO = Luz_tiempo; analogWrite (bl, retroiluminación); }
/ * ---- administrar segundos, minutos, horas am / pm desbordamiento ---- * / if (s == 60) {s = 0; m = m + 1; } si (m == 60) {m = 0; h = h + 1; } si (h == 13) {h = 1; bandera = bandera + 1; if (bandera == 2) bandera = 0; }
if ((button1 == 0) | (button2 == 0)) // Actualiza la pantalla si se presiona el botón de ajuste de tiempo {// Actualiza la pantalla LCD // Imprime el TIEMPO en horas, minutos, segundos + AM / PM lcd.setCursor (0, 0); lcd.print ("Hora"); if (h <10) lcd.print ("0"); // siempre 2 dígitos lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); si (s <10) lcd.print ("0"); lcd.print (s);
if (bandera == 0) lcd.print ("AM"); if (bandera == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // para la Línea 2 lcd.print ("Reloj de precisión"); }
} // finaliza si si no} // finaliza para
// bucle exterior de 1000 ms
s = s + 1; // incrementar seg. contando // ---- administrar segundos, minutos, horas am / pm desbordamiento ---- if (s == 60) {s = 0; m = m + 1; } si (m == 60) {m = 0; h = h + 1; } si (h == 13) {h = 1; bandera = bandera + 1; if (bandera == 2) bandera = 0; }
// Fin del bucle}
Paso 3: esquema (esto no es realmente un paso)
Si alguien que lee esto es un nerd tecnológico, aquí también hay un esquema, puede verlo enloquecer.
Disfruta y diviértete y, sobre todo, mantente fresco.
Recomendado:
Cómo hacer un reloj analógico y un reloj digital con una tira de LED usando Arduino: 3 pasos
Cómo hacer un reloj analógico y un reloj digital con una tira de LED usando Arduino: Hoy haremos un reloj analógico & Reloj digital con Led Strip y módulo MAX7219 Dot con Arduino, corregirá la hora con la zona horaria local. El reloj analógico puede usar una tira de LED más larga, por lo que se puede colgar en la pared para convertirse en una obra de arte
Reloj de jubilación / Cuenta ascendente / Reloj Dn: 4 pasos (con imágenes)
Reloj de jubilación / Count Up / Dn Clock: Tenía algunas de estas pantallas de matriz de puntos LED de 8x8 en el cajón y estaba pensando qué hacer con ellas. Inspirado por otros instructables, tuve la idea de construir una pantalla de cuenta regresiva / ascendente para contar regresivamente hasta una fecha / hora futura y si el tiempo objetivo p
Reloj despertador inteligente: un reloj despertador inteligente hecho con Raspberry Pi: 10 pasos (con imágenes)
Reloj despertador inteligente: un reloj despertador inteligente hecho con Raspberry Pi: ¿Alguna vez has querido un reloj inteligente? Si es así, ¡esta es la solución para usted! Hice Smart Alarm Clock, este es un reloj que puede cambiar la hora de la alarma de acuerdo con el sitio web. Cuando suene la alarma, habrá un sonido (zumbador) y 2 luces
Reloj Vortex: un reloj de pulsera con espejo infinito: 10 pasos (con imágenes)
Vortex Watch: un reloj de pulsera con espejo infinito: el objetivo de este proyecto era crear una versión portátil de un reloj con espejo infinito. Utiliza sus LED RGB para indicar el tiempo asignando horas, minutos y segundos a las luces roja, verde y azul respectivamente y superponiendo estos tonos t
Reloj de red ESP8266 sin ningún RTC - Reloj Nodemcu NTP Sin RTC - PROYECTO RELOJ DE INTERNET: 4 Pasos
Reloj de red ESP8266 sin ningún RTC | Reloj Nodemcu NTP Sin RTC | PROYECTO DE RELOJ DE INTERNET: En el proyecto se realizará un proyecto de reloj sin RTC, se tomará tiempo de Internet usando wifi y lo mostrará en la pantalla st7735