Arduino: costruisci la sveglia - come funziona
In questo suggerimento pratico, imparerai come costruire una sveglia con Arduino. È facile con il codice giusto.
Arduino: costruisci la sveglia - come funziona
Per una sveglia Arduino sono necessari un alimentatore, un ricevitore IR con telecomando, un cicalino, un modulo in tempo reale DS3231, un termistore, un LCD e, naturalmente, una breadboard e un Arduino con cavi jumper corrispondenti.
- Innanzitutto collegare l'alimentatore nel modo giusto sulla breadboard e assicurarsi che sia impostato su 5 volt su entrambi i lati.
- Collegare il ricevitore a infrarossi alle barre più e meno e al pin 3.
- Collegare il buzzer attivo al pin 13 e al suolo (meno la barra).
- Il modulo DS3231 è anche collegato alle barre più e meno. Collega anche SDA a SDA e SCL a SCL su Arduino.
- Ora è necessario il termistore, anch'esso collegato a 5 volt e allo 0 analogico tramite una resistenza da 10 kOhm.
- Infine, devi collegare il display LCD. K è collegato a - e A a +. I pin da D4 a D7 si collegano ai pin da 9 a 12 su Arduino. Ora devi collegare E al pin 8, RW alla barra meno e RS al pin 7. Collegare il pin V0 a un potenziometro da 10k, collegato a 5 V e messa a terra. Infine, collega VDD a 5V e VSS a terra.
Programmare la sveglia Arduino
Se hai impostato tutto correttamente, puoi programmare la sveglia Arduino. Per questo abbiamo scritto un piccolo codice di esempio:
- #include #include #include #include "IRremote.h" int tempPin = 0; Orologio DS3231; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int ricevitore = 3; IRrecv irrecv (ricevitore); risultati decode_results; int alarm; booleano alarm_state = false; Ora stringa; String destination_time; Minuto stringa; String current_time; int buzzer = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; break; // Cassa POWER 0xFFE21D: break; // Caso FUNC / STOP 0xFF629D: break; // VOL + case 0xFF22DD: break; // Custodia FAST BACK 0xFF02FD: break; // Caso PAUSA 0xFFC23D: break; // Caso FAST FORWARD 0xFFE01F: break; // DOWN case 0xFFA857: break; // VOL- case 0xFF906F: break; // UP case 0xFF9867: break; // Caso EQ 0xFFB04F: break; // Caso ST / REPT 0xFF6897: allarme = 0; add (); break; // 0 caso 0xFF30CF: allarme = 1; add (); break; // 1 caso 0xFF18E7: allarme = 2; add (); break; // 2 caso 0xFF7A85: allarme = 3; add (); break; // 3 caso 0xFF10EF: allarme = 4; add (); break; // 4 caso 0xFF38C7: allarme = 5; add (); break; // 5 caso 0xFF5AA5: allarme = 6; add (); break; // 6 caso 0xFF42BD: allarme = 7; add (); break; // 7 caso 0xFF4AB5: allarme = 8; add (); break; // 8 caso 0xFF52AD: allarme = 9; add (); break; // 9 caso 0xFFFFFFFF: pausa; impostazione predefinita: pausa; } ritardo (500); } void add () {destination_time + = String (allarme); } void setup () {pinMode (buzzer, 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); float tempC = tempK - 273.15; float 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 (); } hour = clock.dateFormat ("H", dt); minute = clock.dateFormat ("i", dt); current_time = ora + minuto; if (current_time == destination_time && alarm_state == true) {pinMode (buzzer, HIGH); } else {pinMode (buzzer, 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 = ""; } ritardo (1000); }
- Suggerimento: copia questo codice nel tuo IDE e adattalo come richiesto. Puoi trovare una spiegazione dettagliata delle linee di codice nella nostra galleria di immagini.
Nel prossimo articolo, spiegheremo come è possibile controllare un modulo GSM con Arduino.