Arduino: construir reloj despertador - como funciona
En este consejo práctico, aprenderá a construir un reloj despertador con el Arduino. Es fácil con el código correcto.
Arduino: construir reloj despertador - como funciona
Para un reloj despertador Arduino necesita una fuente de alimentación, un receptor IR con control remoto, un timbre, un módulo de tiempo real DS3231, un termistor, una pantalla LCD y, por supuesto, una placa de prueba y un Arduino con cables de puente a juego.
- Primero, conecte la fuente de alimentación de forma correcta en la placa de pruebas y asegúrese de que esté configurada en 5 voltios en ambos lados.
- Conecte el receptor de infrarrojos a las barras más y menos y al pin 3.
- Conecte el zumbador activo al pin 13 y al suelo (barra negativa).
- El módulo DS3231 también está conectado a las barras más y menos. También conecte SDA a SDA y SCL a SCL en el Arduino.
- Ahora necesita el termistor, que también está conectado a 5 voltios y al análogo 0 a través de una resistencia de 10 kOhm.
- Finalmente, debe conectar la pantalla LCD. K está conectado a - y A a +. Los pines D4 a D7 se conectan a los pines 9 a 12 en el Arduino. Ahora tiene que conectar E al pin 8, RW a la barra negativa y RS al pin 7. Conecte el pin V0 a un potenciómetro de 10k, que está conectado a 5V y tierra. Finalmente, conecte VDD a 5V y VSS a tierra.
Programe el despertador Arduino
Si ha configurado todo correctamente, puede programar el despertador Arduino. Hemos escrito un pequeño código de muestra para esto:
- #include #include #include #include "IRremote.h" int tempPin = 0; Reloj DS3231; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int receptor = 3; IRrecv irrecv (receptor); resultados de decode_results; int alarma; estado_alarma booleano = falso; Hora de cuerda; Cadena destination_time; Minuto de cuerda; Cadena current_time; zumbador int = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; romper; // Caso POWER 0xFFE21D: break; // FUNC / STOP case 0xFF629D: break; // VOL + case 0xFF22DD: break; // Caso FAST BACK 0xFF02FD: break; // PAUSE case 0xFFC23D: break; // Caso FAST FORWARD 0xFFE01F: break; // ABAJO caso 0xFFA857: break; // VOL- caso 0xFF906F: descanso; // caso UP 0xFF9867: break; // Caso EQ 0xFFB04F: break; // Caso ST / REPT 0xFF6897: alarma = 0; añadir (); romper; // 0 caso 0xFF30CF: alarma = 1; añadir (); romper; // 1 caso 0xFF18E7: alarma = 2; añadir (); romper; // 2 caso 0xFF7A85: alarma = 3; añadir (); romper; // 3 casos 0xFF10EF: alarma = 4; añadir (); romper; // 4 casos 0xFF38C7: alarma = 5; añadir (); romper; // 5 casos 0xFF5AA5: alarma = 6; añadir (); romper; // 6 casos 0xFF42BD: alarma = 7; añadir (); romper; // 7 caso 0xFF4AB5: alarma = 8; añadir (); romper; // 8 casos 0xFF52AD: alarma = 9; añadir (); romper; // 9 caso 0xFFFFFFFF: break; predeterminado: descanso; } retraso (500); } void add () {destination_time + = String (alarma); } configuración nula () {pinMode (zumbador, SALIDA); lcd.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); doble tempK = log (10000.0 * ((1024.0 / tempReading - 1))); tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK); flotante tempC = tempK - 273.15; flotante tempF = (tempC * 9.0) / 5.0 + 32.0; dt = clock.getDateTime (); lcd.setCursor (0, 0); lcd.print (formato clock.date ("dmY H: i: s", dt)); lcd.setCursor (0, 1); lcd.print (String (tempC) + "" + String ((char) 223) + "C"); if (irrecv.decode (& results)) {translateIR (); irrecv.resume (); } hora = clock.dateFormat ("H", dt); minuto = clock.dateFormat ("i", dt); current_time = hora + minuto; if (current_time == destination_time && alarm_state == true) {pinMode (zumbador, ALTO); } else {pinMode (zumbador, BAJO); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } else {lcd.setCursor (10, 1); lcd.print (""); } if (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } else if (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "tipo"); } else {lcd.setCursor (11, 1); lcd.print ( "tipo"); destination_time = ""; } retraso (1000); }
- Consejo: copie este código en su IDE y adáptelo según sea necesario. Puede encontrar una explicación detallada de las líneas de código en nuestra galería de imágenes.
En el siguiente artículo, explicaremos cómo puede controlar un módulo GSM con Arduino.