Arduino: построить будильник - как это работает
Видео по теме: (May 2024).
В этом практическом совете вы узнаете, как построить будильник с Arduino. Это легко с правильным кодом.
Arduino: построить будильник - как это работает
Для будильника Arduino вам понадобится источник питания, ИК-приемник с дистанционным управлением, зуммер, модуль реального времени DS3231, термистор, ЖК-дисплей и, конечно, макетная плата и Arduino с соответствующими соединительными кабелями.
- Сначала правильно подключите блок питания к макету и убедитесь, что он установлен на 5 вольт с обеих сторон.
- Подключите инфракрасный приемник к плюсу и минусу и к контакту 3.
- Подключите активный зуммер к контакту 13 и к земле (минус штанга).
- Модуль DS3231 также подключен к плюсу и минусу. Также подключите SDA к SDA и SCL к SCL на Arduino.
- Теперь вам нужен термистор, который также подключен к 5 вольтам и к аналоговому 0 через резистор 10 кОм.
- Наконец, вы должны подключить ЖК-дисплей. К связан с - и А к +. Контакты с D4 по D7 подключаются к контактам с 9 по 12 на Arduino. Теперь вам нужно подключить E к контакту 8, RW к минусу и RS к контакту 7. Подключите контакт V0 к потенциометру 10 кОм, который подключен к 5 В и заземлению. Наконец, подключите 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 receive = 3; IRrecv irrecv (получатель); результаты decode_results; внутренняя тревога; логическое значение alarm_state = false; Струнный час; Строка destination_time; Струнная минута; Строка current_time; зуммер = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; перерыв; // POWER case 0xFFE21D: break; // FUNC / STOP case 0xFF629D: break; // VOL + case 0xFF22DD: break; // FAST BACK case 0xFF02FD: break; // ПАУЗА case 0xFFC23D: break; // FAST FORWARD case 0xFFE01F: break; // ВНИЗ case 0xFFA857: break; // VOL- case 0xFF906F: break; // UP case 0xFF9867: break; // Эквалайзер case 0xFFB04F: break; // ST / REPT case 0xFF6897: alarm = 0; Добавить (); перерыв; // 0 case 0xFF30CF: alarm = 1; Добавить (); перерыв; // 1 case 0xFF18E7: alarm = 2; Добавить (); перерыв; // 2 case 0xFF7A85: alarm = 3; Добавить (); перерыв; // 3 case 0xFF10EF: alarm = 4; Добавить (); перерыв; // 4 case 0xFF38C7: alarm = 5; Добавить (); перерыв; // 5 case 0xFF5AA5: alarm = 6; Добавить (); перерыв; // 6 case 0xFF42BD: alarm = 7; Добавить (); перерыв; // 7 case 0xFF4AB5: alarm = 8; Добавить (); перерыв; // 8 case 0xFF52AD: alarm = 9; Добавить (); перерыв; // 9 case 0xFFFFFFFF: break; по умолчанию: перерыв; } задержка (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 (формат 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); current_time = час + минута; 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 ( "ТИП"); } else {lcd.setCursor (11, 1); lcd.print ( "ТИП"); destination_time = ""; } задержка (1000); }
- Совет: скопируйте этот код в вашу среду IDE и адаптируйте его по мере необходимости. Вы можете найти подробное объяснение строк кода в нашей картинной галерее.
В следующей статье мы объясним, как вы можете управлять модулем GSM с помощью Arduino.