Arduino: изгради будилник - как работи
Свързани Видеоклипове: (Може 2024).
В този практичен съвет ще научите как да изградите будилник с Arduino. Лесно е с правилния код.
Arduino: изгради будилник - как работи
За алармен часовник Arduino се нуждаете от захранване, IR приемник с дистанционно управление, зумер, DS3231 модул в реално време, термистор, LCD и, разбира се, дъска и Arduino със съответстващи джъмперни кабели.
- Първо включете захранването по правилния начин на дъската и се уверете, че е настроен на 5 волта от двете страни.
- Свържете инфрачервения приемник към плюс и минус и към щифт 3.
- Свържете активния зумер с щифт 13 и към земята (минус лента).
- Модулът DS3231 също е свързан към плюс и минус. Също така свържете SDA към SDA и SCL към SCL на Arduino.
- Сега имате нужда от термистора, който също е свързан към 5 волта и към аналогов 0 чрез 10 kOhm резистор.
- Накрая трябва да свържете LCD. K е свързан с - и от A до +. Игли D4 до D7 се свързват с щифтове от 9 до 12 на Arduino. Сега трябва да свържете E към пин 8, RW към минус лентата и RS към щифт 7. Свържете щифт V0 към 10k потенциометър, който е свързан към 5V и земята. Накрая, свържете VDD към 5V и VSS към земята.
Програмирайте будилника Arduino
Ако сте настроили всичко правилно, можете да програмирате будилника Arduino. За това написахме малък примерен код:
- #include #include #include #include "IRremote.h" int tempPin = 0; DS3231 часовник; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int приемник = 3; IRrecv ircv (приемник); decode_results резултати; int аларма; boolean alarm_state = невярно; Час на струните; String target_time; Струнна минута; String current_time; int зумер = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; прекъсване; // POWER случай 0xFFE21D: почивка; // FUNC / STOP случай 0xFF629D: почивка; // VOL + случай 0xFF22DD: почивка; // БЪРЗО НАЗАД случай 0xFF02FD: почивка; // PAUSE случай 0xFFC23D: почивка; // случай БЪРЗО НАПЪЛНО 0xFFE01F: почивка; // DOWN случай 0xFFA857: почивка; // VOL- случай 0xFF906F: почивка; // UP UP случай 0xFF9867: почивка; // EQ случай 0xFFB04F: почивка; // ST / REPT случай 0xFF6897: аларма = 0; добавете (); прекъсване; // 0 случай 0xFF30CF: аларма = 1; добавете (); прекъсване; // 1 случай 0xFF18E7: аларма = 2; добавете (); прекъсване; // 2 случай 0xFF7A85: аларма = 3; добавете (); прекъсване; // 3 случай 0xFF10EF: аларма = 4; добавете (); прекъсване; // 4 случай 0xFF38C7: аларма = 5; добавете (); прекъсване; // 5 случай 0xFF5AA5: аларма = 6; добавете (); прекъсване; // 6 случай 0xFF42BD: аларма = 7; добавете (); прекъсване; // 7 случай 0xFF4AB5: аларма = 8; добавете (); прекъсване; // 8 случай 0xFF52AD: аларма = 9; добавете (); прекъсване; // 9 случай 0xFFFFFFFF: почивка; по подразбиране: прекъсване; } забавяне (500); } void add () {Destination_time + = String (аларма); } void setup () {pinMode (зумер, изход); lcd.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); двоен tempK = лог (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 (формат на часовник.date ("dmY H: i: s", dt)); lcd.setCursor (0, 1); lcd.print (String (tempC) + "" + String ((char) 223) + "C"); ако (nerev.decode (& резултати)) {translateIR (); irrecv.resume (); } hour = clock.dateFormat ("H", dt); минута = clock.dateFormat ("i", dt); current_time = час + минута; ако (current_time == target_time && alarm_state == true) {pinMode (зумер, HIGH); } else {pinMode (зумер, LOW); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } else {lcd.setCursor (10, 1); lcd.print (""); } if (target_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } else if (target_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "тип"); } else {lcd.setCursor (11, 1); lcd.print ( "тип"); местоназначение_време = ""; } забавяне (1000); }
- Съвет: Копирайте този код в IDE и го адаптирайте според изискванията. Можете да намерите подробно обяснение на кодовите линии в нашата галерия с картини.
В следващата статия ще ви обясним как можете да управлявате GSM модул с Arduino.