Arduino: construir despertador - como funciona
Nesta dica prática, você aprenderá como criar um despertador com o Arduino. É fácil com o código certo.
Arduino: construir despertador - como funciona
Para um despertador Arduino, você precisa de uma fonte de alimentação, um receptor de infravermelho com controle remoto, uma campainha, um módulo em tempo real DS3231, um termistor, um LCD e, é claro, uma placa de ensaio e um Arduino com cabos de ligação correspondentes.
- Primeiro, conecte a fonte de alimentação da maneira correta na placa de ensaio e verifique se está configurada para 5 volts nos dois lados.
- Conecte o receptor infravermelho às barras mais e menos e ao pino 3.
- Conecte a campainha ativa ao pino 13 e ao chão (barra de menos).
- O módulo DS3231 também está conectado às barras de mais e menos. Conecte também o SDA ao SDA e o SCL ao SCL no Arduino.
- Agora você precisa do termistor, que também está conectado a 5 volts e ao analógico 0 através de um resistor de 10 kOhm.
- Finalmente, você precisa conectar o LCD. K está conectado a - e A a +. Os pinos D4 a D7 se conectam aos pinos 9 a 12 no Arduino. Agora você deve conectar E ao pino 8, RW à barra de menos e RS ao pino 7. Conecte o pino V0 a um potenciômetro de 10k, conectado a 5V e terra. Finalmente, conecte o VDD a 5V e o VSS ao terra.
Programe o despertador Arduino
Se você configurou tudo corretamente, pode programar o despertador do Arduino. Escrevemos um pequeno código de exemplo para isso:
- #include #include #include "IRremote.h" int tempPin = 0; Relógio DS3231; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int receptor = 3; IRrecv irrecv (receptor); resultados decode_results; alarme int; alarm_state booleano = false; Hora da corda; String destination_time; Minuto da corda; String current_time; buzzer int = 13; void translateIR () {switch (resultados.valor) {case 0xFFA25D: alarm_state =! alarm_state; break; // caso POWER 0xFFE21D: break; // FUNC / STOP case 0xFF629D: break; // VOL + case 0xFF22DD: break; // FAST BACK case 0xFF02FD: break; // PAUSE caso 0xFFC23D: break; // FAST FORWARD case 0xFFE01F: break; // DOWN case 0xFFA857: break; // caso VOL 0xFF906F: break; // UP case 0xFF9867: break; // EQ case 0xFFB04F: break; // Caso ST / REPT 0xFF6897: alarm = 0; add (); break; // 0 caso 0xFF30CF: alarm = 1; add (); break; // 1 caso 0xFF18E7: alarm = 2; add (); break; // 2 caso 0xFF7A85: alarme = 3; add (); break; // 3 case 0xFF10EF: alarm = 4; add (); break; // 4 caso 0xFF38C7: alarme = 5; add (); break; // 5 case 0xFF5AA5: alarme = 6; add (); break; // 6 case 0xFF42BD: alarme = 7; add (); break; // 7 case 0xFF4AB5: alarm = 8; add (); break; // 8 case 0xFF52AD: alarm = 9; add (); break; // 9 case 0xFFFFFFFF: break; padrão: pausa; } atraso (500); } void add () {destination_time + = String (alarme); } void setup () {pinMode (campainha, OUTPUT); lcd.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); double tempK = log (10000.0 * ((1024.0 / tempReading - 1))); tempK = 1 / (0, 001129148 + (0, 000234125 + (0, 0000000876741 * tempK * tempK)) * tempK); temperatura flutuanteC = tempK - 273, 15; tempF flutuante = (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 ((caracter) 223) + "C"); if (irrecv.decode (& resultados)) {translateIR (); irrecv.resume (); } hora = clock.dateFormat ("H", dt); minuto = clock.dateFormat ("i", dt); current_time = hora + minuto; if (hora atual == hora do destino && alarme_estado == verdade) {pinMode (campainha, ALTA); } else {pinMode (campainha, LOW); } 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 = ""; } atraso (1000); }
- Dica: copie esse código no seu IDE e adapte-o conforme necessário. Você pode encontrar uma explicação detalhada das linhas de código em nossa galeria de imagens.
No próximo artigo, explicaremos como você pode controlar um módulo GSM com o Arduino.