Arduino: bouw wekker - hoe het werkt
In deze praktische tip leer je hoe je een wekker bouwt met de Arduino. Het is gemakkelijk met de juiste code.
Arduino: bouw wekker - hoe het werkt
Voor een Arduino-wekker heb je een voeding, een IR-ontvanger met afstandsbediening, een zoemer, een DS3231 real-time module, een thermistor, een LCD en natuurlijk een breadboard en een Arduino met bijpassende startkabels nodig.
- Sluit eerst de voeding op de juiste manier aan op het breadboard en zorg ervoor dat deze aan beide kanten op 5 volt staat.
- Sluit de infraroodontvanger aan op de plus- en minstrepen en op pin 3.
- Sluit de actieve zoemer aan op pin 13 en op de grond (min balk).
- De DS3231-module is ook verbonden met de plus- en minstrepen. Verbind ook SDA met SDA en SCL met SCL op de Arduino.
- Nu heb je de thermistor nodig, die ook is aangesloten op 5 volt en op analoge 0 via een weerstand van 10 kOhm.
- Eindelijk moet u de LCD aansluiten. K is verbonden met - en A tot +. Pins D4 tot en met D7 maken verbinding met pins 9 tot en met 12 op de Arduino. Nu moet u E aansluiten op pin 8, RW op de min-balk en RS op pin 7. Sluit pin V0 aan op een 10k-potentiometer, die is aangesloten op 5V en aarde. Verbind tenslotte VDD met 5V en VSS met de grond.
Programmeer de Arduino-wekker
Als je alles goed hebt ingesteld, kun je de Arduino-wekker programmeren. We hebben hiervoor een kleine voorbeeldcode geschreven:
- #include #include #include #include "IRremote.h" int tempPin = 0; DS3231 klok; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int ontvanger = 3; IRrecv irrecv (ontvanger); decode_resultaten resultaten; int alarm; boolean alarm_state = false; String uur; String destination_time; String minuut; String huidige_tijd; int zoemer = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; break; // POWER-behuizing 0xFFE21D: pauze; // FUNC / STOP-geval 0xFF629D: pauze; // VOL + case 0xFF22DD: pauze; // FAST BACK-geval 0xFF02FD: break; // PAUSE case 0xFFC23D: break; // FAST FORWARD case 0xFFE01F: break; // DOWN case 0xFFA857: break; // VOL- case 0xFF906F: pauze; // UP case 0xFF9867: break; // EQ case 0xFFB04F: break; // ST / REPT geval 0xFF6897: alarm = 0; toe te voegen (); break; // 0 geval 0xFF30CF: alarm = 1; toe te voegen (); break; // 1 geval 0xFF18E7: alarm = 2; toe te voegen (); break; // 2 geval 0xFF7A85: alarm = 3; toe te voegen (); break; // 3 case 0xFF10EF: alarm = 4; toe te voegen (); break; // 4 geval 0xFF38C7: alarm = 5; toe te voegen (); break; // 5 geval 0xFF5AA5: alarm = 6; toe te voegen (); break; // 6 case 0xFF42BD: alarm = 7; toe te voegen (); break; // 7 geval 0xFF4AB5: alarm = 8; toe te voegen (); break; // 8 case 0xFF52AD: alarm = 9; toe te voegen (); break; // 9 case 0xFFFFFFFF: pauze; standaard: break; } vertraging (500); } void add () {destination_time + = String (alarm); } void setup () {pinMode (zoemer, OUTPUT); lcd. begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); dubbele 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-formaat ("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); minute = clock.dateFormat ("i", dt); huidige tijd = uur + minuut; if (current_time == destination_time && alarm_state == true) {pinMode (zoemer, HOOG); } else {pinMode (zoemer, LAAG); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } anders {lcd.setCursor (10, 1); lcd.print (""); } if (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } anders if (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "TYPE"); } anders {lcd.setCursor (11, 1); lcd.print ( "TYPE"); destination_time = ""; } vertraging (1000); }
- Tip: kopieer deze code naar uw IDE en pas deze zo nodig aan. U vindt een gedetailleerde uitleg van de coderegels in onze fotogalerij.
In het volgende artikel leggen we uit hoe u een GSM-module kunt bedienen met de Arduino.