Arduino: κατασκευή συναγερμού - πώς λειτουργεί
Σε αυτή την πρακτική συμβουλή, θα μάθετε πώς να φτιάξετε ξυπνητήρι με το Arduino. Είναι εύκολο με τον σωστό κώδικα.
Arduino: κατασκευή συναγερμού - πώς λειτουργεί
Για ένα ξυπνητήρι Arduino χρειάζεστε μια τροφοδοσία ρεύματος, έναν δέκτη IR με τηλεχειριστήριο, έναν βομβητή, μια μονάδα DS3231 σε πραγματικό χρόνο, έναν θερμοστάτη, μια οθόνη LCD και φυσικά ένα breadboard και ένα Arduino με αντίστοιχα καλώδια jumper.
- Πρώτα συνδέστε το τροφοδοτικό με το σωστό τρόπο γύρω από το breadboard και βεβαιωθείτε ότι έχει ρυθμιστεί σε 5 βολτ και στις δύο πλευρές.
- Συνδέστε το δέκτη υπερύθρων στις ράβδους συν και πλην και στον ακροδέκτη 3.
- Συνδέστε τον ενεργό βομβητή στον ακροδέκτη 13 και στο έδαφος (πλην της μπάρας).
- Η μονάδα DS3231 είναι επίσης συνδεδεμένη στις μπάρες συν και πλην. Συνδέστε επίσης το SDA με το SDA και το SCL με SCL στο Arduino.
- Τώρα χρειάζεστε τον θερμίστορ, ο οποίος επίσης συνδέεται με 5 βολτ και με το αναλογικό 0 μέσω μιας αντίστασης 10 kOhm.
- Τέλος, πρέπει να συνδέσετε την οθόνη LCD. Το Κ είναι συνδεδεμένο με - και Α έως +. Οι ακίδες D4 έως D7 συνδέονται με τους ακροδέκτες 9 έως 12 του Arduino. Τώρα πρέπει να συνδέσετε το Ε στον ακροδέκτη 8, RW στη γραμμή μείον και το RS στην ακίδα 7. Συνδέστε τον ακροδέκτη V0 σε ένα ποτενσιόμετρο 10k, το οποίο είναι συνδεδεμένο σε 5V και στη γείωση. Τέλος, συνδέστε το VDD σε 5V και VSS στο έδαφος.
Προγραμματίστε το ξυπνητήρι Arduino
Εάν έχετε ρυθμίσει τα πάντα σωστά, μπορείτε να προγραμματίσετε το ξυπνητήρι Arduino. Έχουμε γράψει ένα μικρό δείγμα κώδικα για αυτό:
- #include #include #include #include "IRremote.h" int tempPin = 0; DS3231 ρολόι? RTCDateTime dt; Liquid Crystal lcd (7, 8, 9, 10, 11, 12). int δέκτης = 3; IRrecv irrecv (δέκτης); αποτελέσματα decode_results. int συναγερμός; boolean alarm_state = false; Ώρα συμβολοσειράς. String destination_time; Στιγμιότυπο λεπτού. String string_time; int βομβητής = 13; void translateIR () {διακόπτης (result.value) {περίπτωση 0xFFA25D: alarm_state =! alarm_state; σπάσει? // Θήκη POWER 0xFFE21D: σπάσιμο. // Θήκη FUNC / STOP 0xFF629D: σπάσιμο; // VOL + περίπτωση 0xFF22DD: διάλειμμα; // Θήκη FAST BACK 0xFF02FD: διάλειμμα; // PAUSE περίπτωση 0xFFC23D: διάλειμμα; // ΘΕΣΗ FAST FORWARD 0xFFE01F: διάλειμμα; // DOWN περίπτωση 0xFFA857: διάλειμμα; // VOL- περίπτωση 0xFF906F: διάλειμμα; // UP περίπτωση 0xFF9867: διάλειμμα; // Θήκη EQ 0xFFB04F: διάλειμμα; // Θήκη ST / REPT 0xFF6897: συναγερμός = 0; add ()? σπάσει? // 0 περίπτωση 0xFF30CF: συναγερμός = 1; add ()? σπάσει? // 1 περίπτωση 0xFF18E7: συναγερμός = 2; add ()? σπάσει? // 2 περίπτωση 0xFF7A85: συναγερμός = 3; add ()? σπάσει? // 3 περίπτωση 0xFF10EF: συναγερμός = 4; add ()? σπάσει? // 4 περίπτωση 0xFF38C7: συναγερμός = 5; add ()? σπάσει? // 5 περίπτωση 0xFF5AA5: συναγερμός = 6; add ()? σπάσει? // 6 περίπτωση 0xFF42BD: συναγερμός = 7; add ()? σπάσει? // 7 περίπτωση 0xFF4AB5: συναγερμός = 8; add ()? σπάσει? // 8 περίπτωση 0xFF52AD: συναγερμός = 9; add ()? σπάσει? // 9 περίπτωση 0xFFFFFFFF: διάλειμμα; προεπιλογή: διάλειμμα; } καθυστέρηση (500); } άκυρο add () {destination_time + = String (συναγερμός); } άκυρη εγκατάσταση () {pinMode (βομβητής, OUTPUT); lcd.begin (16, 2). clock.begin ()? clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn ()? } άκυρο βρόχο () {int tempReading = αναλογικόΔιαβάστε (tempPin); διπλό tempK = log (10000.0 * ((1024.0 / tempReading - 1))). tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK); χρόνος πτήσης C = tempK - 273, 15. float tempF = (tempC * 9.0) / 5.0 + 32.0. dt = clock.getDateTime (); lcd.setCursor (0, 0); lcd.print (μορφή ρολογιού ("dmY H: i: s", dt)). lcd.setCursor (0, 1). lcd.print (String (tempC) + "" + String ((char) 223) + "C"). αν (irrecv.decode (& αποτελέσματα)) {translateIR (); irrecv.resume ()? } ώρα = ρολόι.dataΦύλλο ("H", dt); λεπτό = ρολόι.dataΦόρμα ("i", dt); current_time = ώρα + λεπτό; αν (current_time == προορισμός_time && alarm_state == true) {pinMode (buzzer, HIGH); } αλλιώς {pinMode (buzzer, LOW). } αν (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!")? } αλλιώς {lcd.setCursor (10, 1); lcd.print (""); } αν (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time)? } else αν (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "ΤΥΠΟΥ")? } αλλιώς {lcd.setCursor (11, 1); lcd.print ( "ΤΥΠΟΥ")? destination_time = ""; } καθυστέρηση (1000); }
- Συμβουλή: Αντιγράψτε αυτόν τον κώδικα στο IDE και προσαρμόστε τον ως απαιτείται. Μπορείτε να βρείτε μια λεπτομερή επεξήγηση των γραμμών κώδικα στην γκαλερί εικόνων μας.
Στο επόμενο άρθρο, θα σας εξηγήσουμε πώς μπορείτε να ελέγξετε μια μονάδα GSM με το Arduino.