0% encontró este documento útil (0 votos)
28 vistas4 páginas

Reloj Digital Simple con LCD I2C

Cargado por

javier uhrig
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
28 vistas4 páginas

Reloj Digital Simple con LCD I2C

Cargado por

javier uhrig
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

#include <Wire.

h> // Biblioteca para comunicación I2C

#include <LiquidCrystal_I2C.h> // Control de la pantalla LCD por I2C

LiquidCrystal_I2C lcd(0x27, 16, 2);

// Dirección I2C de la pantalla (0x27 o 0x3F), tamaño 16x2

int botonMode = 2; // Pin del botón para cambiar de modo

int botonUp = 3; // Pin del botón para aumentar valores

int hora = 12; // Variable donde se guarda la hora

int minuto = 0; // Variable donde se guardan los minutos

int modo = 0; // 0 = reloj normal, 1 = ajustar hora, 2 = ajustar minutos

unsigned long tiempoAnterior = 0; // Para controlar el avance del reloj

unsigned long intervalo = 60000; // 1 minuto = 60 000 ms

void setup() {

[Link](); // Inicializa la pantalla

[Link](); // Enciende la luz de fondo

pinMode(botonMode, INPUT_PULLUP); // Botón con resistencia interna

pinMode(botonUp, INPUT_PULLUP);

[Link]();

[Link](0,0);

[Link](" RELOJ SIMPLE ");

delay(1500);

}
void loop() {

// ------------------------------

// LECTURA DE BOTONES

// ------------------------------

if (digitalRead(botonMode) == LOW) {

modo++; // Cambia al siguiente modo

if (modo > 2) modo = 0; // Vuelve al modo normal

delay(300); // Antirrebote

if (digitalRead(botonUp) == LOW) {

if (modo == 1) { // Si estamos ajustando la hora

hora++;

if (hora >= 24) hora = 0;

if (modo == 2) { // Si estamos ajustando los minutos

minuto++;

if (minuto >= 60) minuto = 0;

delay(200); // Antirrebote

// ------------------------------

// AVANCE AUTOMÁTICO DEL RELOJ

// ------------------------------

if (modo == 0) { // Solo avanza cuando NO estamos ajustando

if (millis() - tiempoAnterior >= intervalo) {

tiempoAnterior = millis();
minuto++;

if (minuto >= 60) {

minuto = 0;

hora++;

if (hora >= 24) hora = 0;

// ------------------------------

// MOSTRAR EN PANTALLA

// ------------------------------

[Link](0,0);

[Link]("Hora: ");

// Muestra hora con dos dígitos

if (hora < 10) [Link]("0");

[Link](hora);

[Link](":");

// Muestra minutos con dos dígitos

if (minuto < 10) [Link]("0");

[Link](minuto);

// Segunda línea: mostrar estado

[Link](0,1);

if (modo == 0) [Link]("Modo: Reloj ");

if (modo == 1) [Link]("Ajustar HORAS ");

if (modo == 2) [Link]("Ajustar MINUTOS ");


}

También podría gustarte