CONTENIDO ►
Proyecto de despertador con termómetro en Arduino con módulo tm1637 y sensor de temperatura y humedad DHT11 (sensor DHT22). También en nuestro sitio web puedes encontrar un proyecto similar de reloj y despertador en LCD 1602 i2c Arduino Uno, Este proyecto de despertador está implementado sin el módulo RTC de reloj en tiempo real ds1302. La hora actual y la hora de alarma se ajustan mediante los pulsadores.
Para esta actividad necesitaremos:
- Arduino Uno / Arduino Nano / Arduino Mega
- módulo display TM1637;
- sensor DHT11 / DHT22;
- pulsadores y zumbador;
- protoboard, cables de conexion;
- librerias TM1637Display.h y DHT.h
Arduino despertador en tm1637 con termómetro
El primer pulsadores (conectado al pin 8) se utiliza para entrar en el modo de ajustes, en primer lugar se ajusta la hora actual, el segundo clic en el botón ajusta la hora de la alarma. Un tercer clic en el pulsadores permite salir del modo de configuración y guardar los datos introducidos. En modo ajustes, el segundo pulsadores (conectado al pin 9) ajusta el reloj, el tercer pulsadores (conectado al pin 10) ajusta los minutos en el despertador.

Al pulsar el segundo pulsadores cuando el programa no está en modo de ajuste, se activa / desactiva la alarma y se muestra el estado actual de alarma ON/OFF en la pantalla de cuatro dígitos del tm1637 Arduino. Al pulsar el tercer botón pulsadores, la pantalla muestra la temperatura ambiente. Después de montar el proyecto del despertador en el Arduino Uno con la temperatura, carga el siguiente programa en el microcontrolador.
Programa Arduino para despertador con termómetro
#include "TM1637Display.h" TM1637Display display(3, 2); // CLC, DIO #include "DHT.h" DHT dht(7, DHT11); // configuración del reloj y la alarma byte HOUR = 13; byte MIN = 21; byte SEC = 0; byte HOUR_A = 13; byte MIN_A = 55; #define HZ 100 // frecuencia del zumbador byte s = 2; // segundos de visualización de la temperatura boolean button1WasUp = true; boolean button2WasUp = true; boolean button3WasUp = true; boolean button1IsUp; boolean button2IsUp; boolean button3IsUp; boolean alarm = true; unsigned long timer; byte w, i; const uint8_t C[] = { SEG_B | SEG_A | SEG_F | SEG_G, SEG_A | SEG_D | SEG_E | SEG_F }; const uint8_t ON[] = { SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, SEG_A | SEG_B | SEG_C | SEG_E | SEG_F }; const uint8_t OFF[] = { SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, SEG_A | SEG_G | SEG_E | SEG_F, SEG_A | SEG_G | SEG_E | SEG_F }; void setup() { pinMode(10, INPUT_PULLUP); // pulsadores pinMode(9, INPUT_PULLUP); pinMode(8, INPUT_PULLUP); pinMode(5, OUTPUT); // zumbador dht.begin(); display.setBrightness(2); // brillo de la pantalla de 0 a 7 timer = millis(); } void loop() { noTone(5); int t = dht.readTemperature(); // función de cuenta atrás de segundos y tiempo if (millis() - timer > 1000) { timer = millis(); SEC++; if (SEC > 59) { SEC = 0; MIN++; } if (MIN > 59) { MIN = 0; HOUR++; } if (HOUR > 23) { HOUR = 0; } display.showNumberDecEx(MIN, 0b01000000, true, 2, 2); } button1IsUp = digitalRead(8); button2IsUp = digitalRead(9); button3IsUp = digitalRead(10); // si se pulsa el botón 1, ir a ajustes if (button1WasUp && !button1IsUp) { delay(10); button1IsUp = digitalRead(8); if (!button1IsUp) { w = 1; } } button1WasUp = button1IsUp; // si se pulsa el botón 2, activar/desactivar la alarma if (button2WasUp && !button2IsUp) { delay(10); button2IsUp = digitalRead(9); if (!button2IsUp) { alarm = !alarm; i = 0; display.clear(); if (alarm == true) { display.setSegments(ON, 2, 2); } if (alarm == false) { display.setSegments(OFF, 3, 1); } while (i < s) { if (millis() - timer > 1000) { timer = millis(); SEC++; i++; } } } } button2WasUp = button2IsUp; // si se pulsa el botón 3, se muestra la temperatura if (button3WasUp && !button3IsUp) { delay(10); button3IsUp = digitalRead(10); if (!button3IsUp) { i = 0; display.clear(); while (i < s) { if (millis() - timer > 1000) { timer = millis(); SEC++; i++; } display.showNumberDecEx(t, 0b00000000, false, 2, 0); display.setSegments(C, 2, 2); } } } button3WasUp = button3IsUp; // activación de la alarma if (alarm == true && HOUR == HOUR_A && MIN >= MIN_A) { tone(5, HZ); delay(50); } display.showNumberDecEx(HOUR, 0b00000000, true, 2, 0); while (w == 1) { button1IsUp = digitalRead(8); button2IsUp = digitalRead(9); button3IsUp = digitalRead(10); if (button1WasUp && !button1IsUp) { delay(10); button1IsUp = digitalRead(8); if (!button1IsUp) { w = 2; } } button1WasUp = button1IsUp; if (button2WasUp && !button2IsUp) { delay(10); button2IsUp = digitalRead(9); if (!button2IsUp) { HOUR++; if (HOUR > 23) HOUR = 0; } } button2WasUp = button2IsUp; if (button3WasUp && !button3IsUp) { delay(10); button3IsUp = digitalRead(10); if (!button3IsUp) { MIN++; if (MIN > 59) MIN = 0; } } button3WasUp = button3IsUp; display.showNumberDecEx(HOUR, 0b01000000, true, 2, 0); display.showNumberDecEx(MIN, 0b01000000, true, 2, 2); if (millis() - timer > 1000) { timer = millis(); SEC++; if (SEC > 59) { SEC = 0; MIN++; } if (MIN > 59) { MIN = 0; HOUR++; } if (HOUR > 23) { HOUR = 0; } } } while (w == 2) { button1IsUp = digitalRead(8); button2IsUp = digitalRead(9); button3IsUp = digitalRead(10); if (button1WasUp && !button1IsUp) { delay(10); button1IsUp = digitalRead(8); if (!button1IsUp) { w = 0; } } button1WasUp = button1IsUp; if (button2WasUp && !button2IsUp) { delay(10); button2IsUp = digitalRead(9); if (!button2IsUp) { HOUR_A++; if (HOUR_A > 23) HOUR_A = 0; } } button2WasUp = button2IsUp; if (button3WasUp && !button3IsUp) { delay(10); button3IsUp = digitalRead(10); if (!button3IsUp) { MIN_A++; if (MIN_A > 59) MIN_A = 0; } } button3WasUp = button3IsUp; display.showNumberDecEx(HOUR_A, 0b00000000, true, 2, 0); display.showNumberDecEx(MIN_A, 0b00000000, true, 2, 2); if (millis() - timer > 1000) { timer = millis(); SEC++; if (SEC > 59) { SEC = 0; MIN++;} if (MIN > 59) { MIN = 0; HOUR++; } if (HOUR > 23) { HOUR = 0; } } } }
Explicación del código para despertador con termómetro:
- la frecuencia de la señal acústica y el brillo de la pantalla se ajustan en el software;
- variable byte s = 2; es responsable del tiempo de visualización de la temperatura en segundos.
Conclusión. Esta versión del despertador en el tm1637 no utiliza un módulo de reloj de tiempo real, por lo que al reiniciar o apagar el microcontrolador Arduino, se establecerán los valores de tiempo originales. Si tienes alguna duda sobre el funcionamiento del programa o el montaje del circuito del proyecto – déjala en los comentarios de este post.

Deja una respuesta