Arduino: construire un réveil - comment cela fonctionne
Dans cette astuce pratique, vous apprendrez à construire un réveil avec l'Arduino. C'est facile avec le bon code.
Arduino: construire un réveil - comment cela fonctionne
Pour un réveil Arduino, vous avez besoin d'une alimentation, d'un récepteur IR avec télécommande, d'un buzzer, d'un module en temps réel DS3231, d'une thermistance, d'un écran LCD et bien sûr d'une planche à pain et d'un Arduino avec des câbles de démarrage assortis.
- Branchez d'abord l'alimentation dans le bon sens sur la planche à pain et assurez-vous qu'elle est réglée sur 5 volts des deux côtés.
- Connectez le récepteur infrarouge aux barres plus et moins et à la broche 3.
- Connectez le buzzer actif à la broche 13 et à la terre (barre moins).
- Le module DS3231 est également connecté aux barres plus et moins. Connectez également SDA à SDA et SCL à SCL sur l'Arduino.
- Vous avez maintenant besoin de la thermistance, qui est également connectée à 5 volts et à l'analogique 0 via une résistance de 10 kOhm.
- Enfin, vous devez connecter l'écran LCD. K est connecté à - et A à +. Les broches D4 à D7 se connectent aux broches 9 à 12 de l'Arduino. Vous devez maintenant connecter E à la broche 8, RW à la barre négative et RS à la broche 7. Connectez la broche V0 à un potentiomètre 10k, qui est connecté à 5V et à la masse. Enfin, connectez VDD à 5V et VSS à la terre.
Programmer le réveil Arduino
Si vous avez tout configuré correctement, vous pouvez programmer le réveil Arduino. Nous avons écrit un petit exemple de code pour cela:
- #include #include #include #include "IRremote.h" int tempPin = 0; Horloge DS3231; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); récepteur int = 3; IRrecv irrecv (récepteur); résultats decode_results; int alarme; boolean alarm_state = false; Heure de chaîne; String destination_time; Minute chaîne; String current_time; buzzer int = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; break; // POWER cas 0xFFE21D: pause; // Cas FUNC / STOP 0xFF629D: break; // VOL + cas 0xFF22DD: break; // Cas FAST BACK 0xFF02FD: break; // PAUSE cas 0xFFC23D: pause; // FAST FORWARD case 0xFFE01F: break; // DOWN case 0xFFA857: pause; // VOL- cas 0xFF906F: break; // UP case 0xFF9867: pause; // Cas d'égalisation 0xFFB04F: break; // Cas ST / REPT 0xFF6897: alarme = 0; ajouter (); break; // 0 cas 0xFF30CF: alarme = 1; ajouter (); break; // 1 cas 0xFF18E7: alarme = 2; ajouter (); break; // 2 cas 0xFF7A85: alarme = 3; ajouter (); break; // 3 cas 0xFF10EF: alarme = 4; ajouter (); break; // 4 cas 0xFF38C7: alarme = 5; ajouter (); break; // 5 cas 0xFF5AA5: alarme = 6; ajouter (); break; // 6 cas 0xFF42BD: alarme = 7; ajouter (); break; // 7 cas 0xFF4AB5: alarme = 8; ajouter (); break; // 8 cas 0xFF52AD: alarme = 9; ajouter (); break; // 9 case 0xFFFFFFFF: pause; par défaut: pause; } retard (500); } void add () {destination_time + = String (alarm); } void setup () {pinMode (buzzer, OUTPUT); lcd.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); double 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 (format clock.date ("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); heure_courante = heure + minute; if (current_time == destination_time && alarm_state == true) {pinMode (buzzer, HIGH); } else {pinMode (buzzer, LOW); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } else {lcd.setCursor (10, 1); lcd.print (""); } if (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } else if (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "TYPE"); } else {lcd.setCursor (11, 1); lcd.print ( "TYPE"); destination_time = ""; } délai (1000); }
- Astuce: copiez ce code dans votre IDE et adaptez-le si nécessaire. Vous pouvez trouver une explication détaillée des lignes de code dans notre galerie de photos.
Dans le prochain article, nous expliquerons comment contrôler un module GSM avec l'Arduino.