Arduino: opbyg vækkeur - hvordan det fungerer
I dette praktiske tip lærer du, hvordan man bygger et vækkeur med Arduino. Det er let med den rigtige kode.
Arduino: opbyg vækkeur - hvordan det fungerer
Til et Arduino-alarmur har du brug for en strømforsyning, en IR-modtager med fjernbetjening, en summer, et DS3231 realtidsmodul, en termistor, en LCD og naturligvis en brødbræt og en Arduino med matchende jumperkabler.
- Tilslut først strømforsyningen den rigtige vej rundt på brødbrættet, og sørg for, at den er indstillet til 5 volt på begge sider.
- Tilslut den infrarøde modtager til plus- og minus-bjælkerne og til pin 3.
- Tilslut den aktive summer til pin 13 og til jorden (minus bar).
- DS3231-modulet er også forbundet til plus- og minus-bjælkerne. Tilslut også SDA til SDA og SCL til SCL på Arduino.
- Nu har du brug for termistoren, som også er tilsluttet 5 volt og til analog 0 via en 10 kOhm modstand.
- Endelig skal du tilslutte LCD'et. K er forbundet til - og A til +. Stifter D4 til D7 forbindes til stifter 9 til 12 på Arduino. Nu skal du tilslutte E til pin 8, RW til minusbjælken og RS til pin 7. Forbind pin V0 til et 10k potentiometer, der er tilsluttet 5V og jord. Tilslut slut VDD til 5V og VSS til jorden.
Programmer Arduino-uret
Hvis du har konfigureret alt korrekt, kan du programmere Arduino-alarmen. Vi har skrevet en lille prøvekode til dette:
- #include #include #include #include "IRremote.h" int tempPin = 0; DS3231 ur; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int-modtager = 3; IRrecv irrecv (modtager); dekode_resultater; int alarm; boolsk alarm_state = falsk; String time; Streng destination_time; Strenge minut; Streng nuværende tid; int summer = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; break; // POWER-sag 0xFFE21D: pause; // FUNC / STOP sag 0xFF629D: pause; // VOL + sag 0xFF22DD: pause; // FAST BACK case 0xFF02FD: break; // PAUSE sag 0xFFC23D: pause; // Hurtigt fremadrettet sag 0xFFE01F: pause; // NED-sag 0xFFA857: pause; // VOL-sag 0xFF906F: pause; // UP-sag 0xFF9867: pause; // EQ-sag 0xFFB04F: pause; // ST / REPT sag 0xFF6897: alarm = 0; tilføje (); break; // 0 sag 0xFF30CF: alarm = 1; tilføje (); break; // 1 sag 0xFF18E7: alarm = 2; tilføje (); break; // 2 sag 0xFF7A85: alarm = 3; tilføje (); break; // 3 sag 0xFF10EF: alarm = 4; tilføje (); break; // 4 sag 0xFF38C7: alarm = 5; tilføje (); break; // 5 sag 0xFF5AA5: alarm = 6; tilføje (); break; // 6 sag 0xFF42BD: alarm = 7; tilføje (); break; // 7 sag 0xFF4AB5: alarm = 8; tilføje (); break; // 8 sag 0xFF52AD: alarm = 9; tilføje (); break; // 9 sag 0xFFFFFFFF: pause; standard: pause; } forsinkelse (500); } void add () {destination_time + = String (alarm); } ugyldig opsætning () {pinMode (summer, OUTPUT); lcd.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); dobbelt 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 = clock.getDateTime (); lcd.set markør (0, 0); lcd.print (clock.date-format ("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 (); } hour = clock.dateFormat ("H", dt); minut = ur.dateFormat ("i", dt); aktuelle tid = time + minut; if (current_time == destination_time && alarm_state == true) {pinMode (summer, HØJ); } andet {pinMode (summer, LAV); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } andet {lcd.setCursor (10, 1); lcd.print (""); } if (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } andet hvis (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "TYPE"); } andet {lcd.setCursor (11, 1); lcd.print ( "TYPE"); destination_time = ""; } forsinkelse (1000); }
- Tip: Kopier denne kode til din IDE og tilpass den efter behov. Du kan finde en detaljeret forklaring af kodelinjerne i vores billedgalleri.
I den næste artikel vil vi forklare, hvordan du kan styre et GSM-modul med Arduino.