#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 ");
}