Ing. Alfredo Segura, México julio de 2025.
Tras de realizar varios proyectos con Display OLED SSD1306 de 128x64 pixeles y Encoder Rotativo con Push Button integrado, hubo que diseñar un Timer que encendiera un ventilador por 10 minutos y lo mantuviera apagado por 10 horas. El proyecto ideal para usar Arduino haciendo uso de millis().
He elegido el Arduino NANO por su bajo costo y su capacidad sobrada para este proyecto, desarrollando el código con el IDE de Arduino, cuya parte medular es el siguiente listado:
if ((flagtc == true) && (millis() > (tiempo + t_enc))) { // 5000
digitalWrite(PinRy, LOW); // Apaga el Ventilador
flagtc = false;
flagtl = true;
tiempo = millis();
onoff = "OFF";
mostrar();
}
if ((flagtl == true) && (millis() > (tiempo + t_apa))) {
digitalWrite(PinRy, HIGH); // Enciende el Ventilador
flagtc = true;
flagtl = false;
tiempo = millis();
onoff = "ON";
mostrar();
}
Es decir, apagar y encender el ventilador, depende del estado anterior, lo que se maneja con las variables flagtc y flagtl del tipo booleano.
El resto del código es para controlar el display OLED y detectar giros en el Encoder Rotativo, haciendo uso de los pines de INTerrupción externa (Pin 2 y Pin 3) del NANO.
Al encender o resetear el Arduino NANO, se hace sonar un buzzer con dos pitidos, mientras que el display muestra “TIMER 0/1” en cuanto no se manipule el Encoder, pero el Timer ya está en funcionamiento. Si se requiere cambiar los tiempos de encendido y/o apagado, se presiona el push button integrado al encoder, lo que lleva al programa a colocar una línea en el display, debajo de T_ENC o de T_APA, permitiendo subir o bajar el valor de milisegundos girando el encoder en sentido horario o antihorario. El display mostrará el tiempo en milisegundos y también en minutos con parte entera y fraccionaria.
Si el push button del encoder es presionado por más de 5 segundos, se entra en una sección para grabar ambos valores; T_ECN y T_APA en la memoria EEPROM propia del Arduino NANO. Así que al resetear el dispositivo, y durante el setup() se lee el contenido de la memoria EEPROM, recuperando ambos valores.
El diagrama del circuito es el siguiente:
La tarjeta PCB realizada en Traxmaker se muestra a continuación:
El circuito en protoboard funcionando, se muestra en la siguiente fotografía:

No hay comentarios:
Publicar un comentario