Arduino: buduj budzik - jak to działa
W tej praktycznej wskazówce dowiesz się, jak zbudować budzik za pomocą Arduino. To jest łatwe z odpowiednim kodem.
Arduino: buduj budzik - jak to działa
Do budzika Arduino potrzebujesz zasilacza, odbiornika podczerwieni ze zdalnym sterowaniem, brzęczyka, modułu czasu rzeczywistego DS3231, termistora, wyświetlacza LCD i oczywiście deski do krojenia oraz Arduino z pasującymi zworkami.
- Najpierw podłącz zasilacz we właściwy sposób na płycie pilśniowej i upewnij się, że jest on ustawiony na 5 woltów po obu stronach.
- Podłącz odbiornik podczerwieni do słupków plus i minus oraz do pinu 3.
- Podłącz aktywny brzęczyk do styku 13 i do ziemi (pasek minus).
- Moduł DS3231 jest również podłączony do słupków plus i minus. Podłącz także SDA do SDA i SCL do SCL na Arduino.
- Teraz potrzebujesz termistora, który jest również podłączony do 5 woltów i do analogu 0 za pomocą rezystora 10 kOhm.
- Na koniec musisz podłączyć LCD. K jest podłączony do - i A do +. Styki D4 do D7 łączą się z pinami 9 do 12 w Arduino. Teraz musisz podłączyć E do pinu 8, RW do paska minus i RS do pinu 7. Podłącz styk V0 do potencjometru 10 k, który jest podłączony do 5 V i masy. Na koniec podłącz VDD do 5 V i VSS do ziemi.
Zaprogramuj budzik Arduino
Jeśli wszystko zostało poprawnie skonfigurowane, możesz zaprogramować budzik Arduino. W tym celu napisaliśmy mały przykładowy kod:
- #include #include #include #include "IRremote.h" int tempPin = 0; Zegar DS3231; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int odbiornik = 3; IRrecv irrecv (odbiornik); wyniki decode_results; alarm wewnętrzny; boolean alarm_state = false; Godzina sznurkowa; Ciąg destination_time; Minuta strunowa; Ciąg bieżący_czas; int brzęczyk = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; break; // Obudowa POWER 0xFFE21D: break; // Przypadek FUNC / STOP 0xFF629D: break; // VOL + case 0xFF22DD: break; // FAST BACK case 0xFF02FD: break; // PAUSE case 0xFFC23D: break; // SZYBKA DO PRZODU przypadek 0xFFE01F: przerwa; // DÓŁ przypadek 0xFFA857: przerwa; // VOL-case 0xFF906F: break; // UP UP 0xFF9867: break; // EQ case 0xFFB04F: break; // Przypadek ST / REPT 0xFF6897: alarm = 0; dodawanie (); break; // 0 przypadek 0xFF30CF: alarm = 1; dodawanie (); break; // 1 przypadek 0xFF18E7: alarm = 2; dodawanie (); break; // 2 przypadek 0xFF7A85: alarm = 3; dodawanie (); break; // 3 przypadek 0xFF10EF: alarm = 4; dodawanie (); break; // 4 przypadek 0xFF38C7: alarm = 5; dodawanie (); break; // 5 przypadków 0xFF5AA5: alarm = 6; dodawanie (); break; // 6 przypadków 0xFF42BD: alarm = 7; dodawanie (); break; // 7 przypadek 0xFF4AB5: alarm = 8; dodawanie (); break; // 8 przypadek 0xFF52AD: alarm = 9; dodawanie (); break; // 9 przypadek 0xFFFFFFFF: przerwa; domyślnie: przerwa; } opóźnienie (500); } void add () {destination_time + = String (alarm); } void setup () {pinMode (brzęczyk, WYJŚCIE); 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 zegara.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); aktualny czas = godzina + minuta; if (current_time == destination_time && alarm_state == true) {pinMode (brzęczyk, WYSOKI); } else {pinMode (brzęczyk, 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 ( "odmiana"); } else {lcd.setCursor (11, 1); lcd.print ( "odmiana"); destination_time = ""; } opóźnienie (1000); }
- Wskazówka: Skopiuj ten kod do swojego IDE i dostosuj go zgodnie z wymaganiami. Szczegółowe objaśnienia linii kodu można znaleźć w naszej galerii zdjęć.
W następnym artykule wyjaśnimy, jak sterować modułem GSM za pomocą Arduino.