Arduino: bygg väckarklocka - hur det fungerar
I detta praktiska tips lär du dig att bygga en väckarklocka med Arduino. Det är enkelt med rätt kod.
Arduino: bygg väckarklocka - hur det fungerar
För en Arduino väckarklocka behöver du en strömförsörjning, en IR-mottagare med fjärrkontroll, en summer, en DS3231 realtidsmodul, en termistor, en LCD och naturligtvis en brödskiva och en Arduino med matchande jumperkablar.
- Anslut först strömförsörjningen rätt på brädskivan och se till att den är inställd på 5 volt på båda sidor.
- Anslut den infraröda mottagaren till plus- och minus-staplarna och till stift 3.
- Anslut den aktiva summern till stift 13 och till marken (minus bar).
- DS3231-modulen är också ansluten till plus- och minus-staplarna. Anslut också SDA till SDA och SCL till SCL på Arduino.
- Nu behöver du termistorn, som också är ansluten till 5 volt och till analog 0 via ett 10 kOhm-motstånd.
- Slutligen måste du ansluta LCD-skärmen. K är ansluten till - och A till +. Stift D4 till D7 ansluts till stift 9 till 12 på Arduino. Nu måste du ansluta E till stift 8, RW till minusstången och RS till stift 7. Anslut stift V0 till en 10k potentiometer, som är ansluten till 5V och jord. Slutligen anslut VDD till 5V och VSS till marken.
Programmera Arduino väckarklocka
Om du har konfigurerat allt ordentligt kan du programmera Arduino väckarklocka. Vi har skrivit en liten provkod för detta:
- #include #include #include #include "IRremote.h" int tempPin = 0; DS3231 klocka; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int-mottagare = 3; IRrecv irrecv (mottagare); decode_results results; int larm; boolean alarm_state = falsk; String hour; Strängdestination_tid; Stränga minut; Strängström_tid; int summer = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; break; // POWER-fall 0xFFE21D: break; // FUNC / STOP-fall 0xFF629D: break; // VOL + fall 0xFF22DD: break; // FAST BACK case 0xFF02FD: break; // PAUSE-fall 0xFFC23D: break; // FAST FORWARD fall 0xFFE01F: break; // Ner fall 0xFFA857: break; // VOL-fodral 0xFF906F: paus; // UP-mål 0xFF9867: break; // EQ-fall 0xFFB04F: break; // ST / REPT fall 0xFF6897: larm = 0; lägg (); break; // 0 fall 0xFF30CF: larm = 1; lägg (); break; // 1 fall 0xFF18E7: larm = 2; lägg (); break; // 2 fall 0xFF7A85: larm = 3; lägg (); break; // 3 fall 0xFF10EF: larm = 4; lägg (); break; // 4 fall 0xFF38C7: larm = 5; lägg (); break; // 5 fall 0xFF5AA5: larm = 6; lägg (); break; // 6 fall 0xFF42BD: larm = 7; lägg (); break; // 7 fall 0xFF4AB5: larm = 8; lägg (); break; // 8 fall 0xFF52AD: larm = 9; lägg (); break; // 9 fall 0xFFFFFFFF: break; standard: break; } fördröjning (500); } void add () {destination_time + = String (alarm); } void-installation () {pinMode (summer, OUTPUT); lcd.begin (16, 2); clock.begin (); klocka.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); dubbel tempK = log (10000, 0 * ((1024, 0 / tempLäsning - 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 = klocka.getDateTime (); lcd.setCursor (0, 0); lcd.print (klockdatumsformat ("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); minut = klocka.dateFormat ("i", dt); aktuell_tid = timme + minut; if (current_time == destination_time && alarm_state == true) {pinMode (summer, HIGH); } annat {pinMode (summer, LOW); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } annat {lcd.setCursor (10, 1); lcd.print (""); } if (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } annat om (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "TYP"); } annat {lcd.setCursor (11, 1); lcd.print ( "TYP"); destination_time = ""; } fördröjning (1000); }
- Tips: Kopiera den här koden till din IDE och anpassa den efter behov. Du hittar en detaljerad förklaring av kodraderna i vårt bildgalleri.
I nästa artikel förklarar vi hur du kan styra en GSM-modul med Arduino.