Arduino: rakenna herätyskello - miten se toimii
Tässä käytännöllisessä kärjessä opit kuinka rakentaa herätyskello Arduinon kanssa. Se on helppoa oikealla koodilla.
Arduino: rakenna herätyskello - miten se toimii
Arduino-herätyskellolle tarvitset virtalähteen, infrapunavastaanottimen kaukosäätimellä, summerin, DS3231-reaaliaikaisen moduulin, termistorin, nestekidenäytön ja tietysti leipäpöydän ja Arduinon vastaavilla hyppyjohdoilla.
- Kytke ensin virtalähde oikein päin leipälautaan ja varmista, että se on asetettu 5 voltin molemmille puolille.
- Kytke infrapunavastaanotin plus- ja miinuspalkkeihin ja napaan 3.
- Kytke aktiivinen summeri nastaan 13 ja maahan (miinuspalkki).
- DS3231-moduuli on kytketty myös plus- ja miinuspalkkeihin. Yhdistä myös SDA SDA: han ja SCL SCL: ään Arduinossa.
- Tarvitset nyt termistorin, joka on kytketty myös 5 voltiin ja analogiin 0 10 kOhm: n vastuksen kautta.
- Lopuksi sinun on kytkettävä nestekidenäyttö. K on kytketty - ja A - +. Nastat D4 – D7 yhdistyvät nastaihin 9–12 Arduinossa. Nyt sinun on kytkettävä E napaan 8, RW miinuspalkkiin ja RS napaan 7. Kytke nasta V0 10 k: n potentiometriin, joka on kytketty 5 V: seen ja maahan. Kytke lopuksi VDD 5 V: seen ja VSS maahan.
Ohjelmoi Arduino-herätyskello
Jos olet asettanut kaiken oikein, voit ohjelmoida Arduino-herätyskellon. Olemme kirjoittaneet pienen näytekoodin tähän:
- #sisältää #lisäys #sisältää #sisältää "IRremote.h" int tempPin = 0; DS3231 kello; RTCDateTime dt; LiquidCrystal LCD (7, 8, 9, 10, 11, 12); int-vastaanotin = 3; IRrecv irrecv (vastaanotin); dekoodaustulokset; int hälytys; boolean alarm_state = false; Merkkijono; Merkkijono kohdeaika; Merkkijono minuutti; Merkkijono current_time; int summeri = 13; void translateIR () {kytkin (tulokset.arvo) {tapaus 0xFFA25D: hälytys_tila =! hälytys_ tila; break; // POWER-kotelo 0xFFE21D: tauko; // FUNC / STOP-tapaus 0xFF629D: tauko; // VOL + tapaus 0xFF22DD: tauko; // FAST BACK -tapaus 0xFF02FD: tauko; // PAUSE case 0xFFC23D: break; // FAST FORWARD tapaus 0xFFE01F: tauko; // ALAS tapaus 0xFFA857: tauko; // VOL- kotelo 0xFF906F: tauko; // UP-tapaus 0xFF9867: tauko; // EQ-tapaus 0xFFB04F: tauko; // ST / REPT-tapaus 0xFF6897: hälytys = 0; Lisää (); break; // 0 tapaus 0xFF30CF: hälytys = 1; Lisää (); break; // 1 tapaus 0xFF18E7: hälytys = 2; Lisää (); break; // 2 tapaus 0xFF7A85: hälytys = 3; Lisää (); break; // 3 tapaus 0xFF10EF: hälytys = 4; Lisää (); break; // 4 tapaus 0xFF38C7: hälytys = 5; Lisää (); break; // 5 tapaus 0xFF5AA5: hälytys = 6; Lisää (); break; // 6 tapaus 0xFF42BD: hälytys = 7; Lisää (); break; // 7 tapaus 0xFF4AB5: hälytys = 8; Lisää (); break; // 8 tapausta 0xFF52AD: hälytys = 9; Lisää (); break; // 9 tapausta 0xFFFFFFFF: tauko; oletus: tauko; } viive (500); } void add () {kohde_aika + = merkkijono (hälytys); } void setup () {pinMode (summeri, OUTPUT); lcdbegin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } tyhjä silmukka () {int tempReading = analogRead (tempPin); kaksinkertainen tempK = log (10000, 0 * ((1024, 0 / tempReading - 1))); tempK = 1 / (0, 001129148 + (0, 000234125 + (0, 0000000876741 * tempK * tempK)) * tempK); kelluva tempC = tempK - 273, 15; kelluva tempF = (tempC * 9, 0) / 5, 0 + 32, 0; dt = kello.getDateTime (); lcd.setCursor (0, 0); lcd.print (kellotaulun päivämäärä ("dmY H: i: s", dt)); lcd.setCursor (0, 1); lcd.print (merkkijono (tempC) + "" + merkkijono ((char) 223) + "C"); if (irrecv.decode (& results)) {translateIR (); irrecv.resume (); } tunti = kello.päivämuoto ("H", dt); minuutti = kello.päivämuoto ("i", dt); nykyinen aika = tunti + minuutti; if (current_time == kohde_aika ja&larm_state == true) {pinMode (summeri, HIGH); } else {pinMode (summeri, LOW); } if (hälytystila == totta) {lcd.setCursor (10, 1); lcd.print ( "!"); } else {lcd.setCursor (10, 1); lcd.print (""); } if (kohde_aika.pituus () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } else if (kohde_aika.pituus () <4) {lcd.setCursor (11, 1); lcd.print ( "TYPE"); } else {lcd.setCursor (11, 1); lcd.print ( "TYPE"); määräaika_aika = ""; } viive (1000); }
- Vinkki: Kopioi tämä koodi IDE: hen ja muokkaa sitä tarvittaessa. Löydät tarkan selityksen koodirivistä kuvagalleriasta.
Seuraavassa artikkelissa selitetään kuinka voit hallita GSM-moduulia Arduinon avulla.