Arduino: ébresztőóra felépítése - hogyan működik
Ebben a gyakorlati tippben megtanulja, hogyan kell ébresztőórát készíteni az Arduino-val. Könnyű a megfelelő kóddal.
Arduino: ébresztőóra felépítése - hogyan működik
Arduino ébresztőórahoz tápellátásra, IR vevőre távirányítóval, hangjelzőre, DS3231 valós idejű modulra, termisztorra, LCD-re és természetesen kenyérlemezre, valamint Arduino-ra, megfelelő jumper-kábelekkel van szükség.
- Először csatlakoztassa a tápegységet a kenyérpultra, és ellenőrizze, hogy mindkét oldalon 5 voltra van-e állítva.
- Csatlakoztassa az infravörös vevőt a plusz és mínusz sávokhoz, és a 3-as csatlakozóhoz.
- Csatlakoztassa az aktív hangjelzőt a 13. érintkezőhöz és a talajhoz (mínusz sáv).
- A DS3231 modult a plusz és mínusz sávokhoz is csatlakoztatják. Csatlakoztassa az SDA-t az SDA-hoz és az SCL-t az SCL-hez az Arduino-n.
- Most szüksége van egy termisztorra, amely szintén csatlakoztatva van 5 voltra és a 0-as analógra egy 10 kOhm-os ellenálláson keresztül.
- Végül csatlakoztatnia kell az LCD-t. K kapcsolódik - és A és +. A D4 – D7 érintkezők az Arduino 9–12 érintkezőivel csatlakoznak. Most csatlakoztatnia kell az E-t a 8. pólushoz, az RW-t a mínusz sávhoz és az RS-t a 7. pólushoz. Csatlakoztassa a V0 tűt egy 10k potenciométerhez, amelyet az 5 V-os földhöz csatlakoztatnak. Végül csatlakoztassa a VDD-t az 5 V-ra és a VSS-t a földre.
Programozza az Arduino ébresztőórát
Ha mindent megfelelően beállított, beprogramozhatja az Arduino ébresztőórát. Írtunk egy kis minta kódot ehhez:
- #include #include #include #include "IRremote.h" int tempPin = 0; DS3231 óra; RTCDateTime dt; LiquidCrystal LCD (7, 8, 9, 10, 11, 12); int vevő = 3; IRrecv irrecv (vevő); decode_results eredmények; int riasztás; logikai riasztási állapot = hamis; Vonós óra; Karakterlánc cél_idő; String perc; String current_time; int zümmögés = 13; void translateIR () {kapcsoló (eredmények.érték) {0xFFA25D eset: riasztás_állapota =! riasztás_ állapota; break; // POWER 0xFFE21D eset: törés; // FUNC / STOP eset 0xFF629D: törés; // VOL + eset 0xFF22DD: törés; // GYors VISSZA-eset 0xFF02FD: törés; // SZÜNET 0xFFC23D eset: szünet; // FAST FORWARD 0xFFE01F eset: törés; // 0xFFA857 DOWN eset: törés; // VOL- eset 0xFF906F: törés; // UP eset 0xFF9867: szünet; // 0QFFB04F EQ eset: törés; // ST / REPT eset 0xFF6897: riasztás = 0; add (); break; // 0 eset 0xFF30CF: riasztás = 1; add (); break; // 1 eset 0xFF18E7: riasztás = 2; add (); break; // 2 eset 0xFF7A85: riasztás = 3; add (); break; // 3 eset 0xFF10EF: riasztás = 4; add (); break; // 4 eset 0xFF38C7: riasztás = 5; add (); break; // 5 eset 0xFF5AA5: riasztás = 6; add (); break; // 6 eset 0xFF42BD: riasztás = 7; add (); break; // 7 eset 0xFF4AB5: riasztás = 8; add (); break; // 8 eset 0xFF52AD: riasztás = 9; add (); break; // 9 eset 0xFFFFFFFF: szünet; alapértelmezett: break; } késleltetés (500); } void add () {cél_idő + = Húr (riasztás); } void setup () {pinMode (csengő, OUTPUT); lcdbegin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); kettős 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 (clock.date formátum ("dmY H: i: s", dt)); lcd.setCursor (0, 1); lcd.print (karakterlánc (tempC) + "" + karakterlánc ((char) 223) + "C"); if (irrecv.decode (és eredmények)) {translateIR (); irrecv.resume (); } óra = óra.dateFormat ("H", dt); perc = clock.dateFormat ("i", dt); jelenlegi idő = óra + perc; if (aktuális_idő == cél_idő && riasztási állapot == igaz) {pinMode (zümmögő, HIGH); } else {pinMode (csengő, LOW); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } else {lcd.setCursor (10, 1); lcd.print (""); } if (cél_idő.hossz () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } egyébként if (cél_idő.hossz () <4) {lcd.setCursor (11, 1); lcd.print ( "Típus"); } else {lcd.setCursor (11, 1); lcd.print ( "Típus"); cél_idő = ""; } késleltetés (1000); }
- Tipp: Másolja ezt a kódot az IDE-be, és szükség szerint módosítsa. A kódsorok részletes magyarázatát a képtárban találja meg.
A következő cikkben elmagyarázzuk, hogyan vezérelheti a GSM modult az Arduino-val.