Arduino: bygg vekkerklokke - hvordan den fungerer
I dette praktiske tipset lærer du hvordan du bygger en vekkerklokke med Arduino. Det er enkelt med riktig kode.
Arduino: bygg vekkerklokke - hvordan den fungerer
For en Arduino vekkerklokke trenger du en strømforsyning, en IR-mottaker med fjernkontroll, en summer, en DS3231 sanntidsmodul, en termistor, en LCD og selvfølgelig en brødbrett og en Arduino med matchende jumperkabler.
- Koble først strømforsyningen til riktig vei på brødbordet, og sørg for at den er satt til 5 volt på begge sider.
- Koble den infrarøde mottakeren til pluss- og minus-stolpene og til pinne 3.
- Koble den aktive summeren til pinne 13 og til bakken (minus bar).
- DS3231-modulen er også koblet til pluss- og minus-stolpene. Koble også SDA til SDA og SCL til SCL på Arduino.
- Nå trenger du termistoren, som også er koblet til 5 volt og til analog 0 via en 10 kOhm-motstand.
- Til slutt må du koble til LCD-skjermen. K er koblet til - og A til +. Pinnene D4 til D7 kobles til pinnene 9 til 12 på Arduino. Nå må du koble E til pinne 8, RW til minuslinjen og RS til pinne 7. Koble pin V0 til et 10k potensiometer, som er koblet til 5V og jord. Til slutt, koble VDD til 5V og VSS til bakken.
Programmer Arduino vekkerklokke
Hvis du har konfigurert alt riktig, kan du programmere Arduino vekkerklokke. Vi har skrevet en liten prøvekode for dette:
- #include #include #include #include "IRremote.h" int tempPin = 0; DS3231 klokke; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int-mottaker = 3; IRrecv irrecv (mottaker); dekode_resultater; int alarm; boolsk alarm_state = falsk; String time; Streng destinasjonstid; Strengeminutt; String current_time; int summer = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; break; // POWER-sak 0xFFE21D: pause; // FUNC / STOP-sak 0xFF629D: pause; // VOL + sak 0xFF22DD: pause; // RASK TILBAKE sak 0xFF02FD: pause; // PAUSE-sak 0xFFC23D: pause; // RASKT FRAMTID sak 0xFFE01F: pause; // NED sak 0xFFA857: pause; // VOL- sak 0xFF906F: pause; // UP-sak 0xFF9867: pause; // EQ-sak 0xFFB04F: pause; // ST / REPT sak 0xFF6897: alarm = 0; til (); break; // 0 sak 0xFF30CF: alarm = 1; til (); break; // 1 sak 0xFF18E7: alarm = 2; til (); break; // 2 sak 0xFF7A85: alarm = 3; til (); break; // 3 sak 0xFF10EF: alarm = 4; til (); break; // 4 sak 0xFF38C7: alarm = 5; til (); break; // 5 sak 0xFF5AA5: alarm = 6; til (); break; // 6 sak 0xFF42BD: alarm = 7; til (); break; // 7 sak 0xFF4AB5: alarm = 8; til (); break; // 8 sak 0xFF52AD: alarm = 9; til (); break; // 9 sak 0xFFFFFFFF: pause; standard: pause; } forsinkelse (500); } void add () {destination_time + = String (alarm); } ugyldig oppsett () {pinMode (summer, OUTPUT); lcd.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); dobbelt tempK = logg (10000, 0 * ((1024, 0 / tempLesning - 1))); tempK = 1 / (0, 001129148 + (0, 000234125 + (0, 0000000876741 * tempK * tempK)) * tempK); flytetempC = tempK - 273, 15; flytetempF = (tempC * 9, 0) / 5, 0 + 32, 0; dt = klokke.getDateTime (); lcd.set Markør (0, 0); lcd.print (klokke.dateformat ("dmY H: i: s", dt)); lcd.set Markør (0, 1); lcd.print (String (tempC) + "" + String ((char) 223) + "C"); if (irrecv.decode (& resultater)) {translateIR (); irrecv.resume (); } time = klokke.dateFormat ("H", dt); minutt = klokke.dateFormat ("i", dt); nåværende tid = time + minutt; if (current_time == destination_time && alarm_state == true) {pinMode (summer, HIGH); } annet {pinMode (summer, LAV); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } annet {lcd.setCursor (10, 1); lcd.print (""); } if (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } annet hvis (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "type"); } annet {lcd.setCursor (11, 1); lcd.print ( "type"); destination_time = ""; } forsinkelse (1000); }
- Tips: Kopier denne koden til IDE og tilpass den etter behov. Du kan finne en detaljert forklaring av kodelinjene i vårt bildegalleri.
I den neste artikkelen vil vi forklare hvordan du kan kontrollere en GSM-modul med Arduino.