„Arduino“: pastatykite žadintuvą - kaip jis veikia
Šiame praktiniame patarime išmoksite susikurti žadintuvą su „Arduino“. Su teisingu kodu lengva.
„Arduino“: pastatykite žadintuvą - kaip jis veikia
„Arduino“ žadintuvui jums reikia maitinimo šaltinio, IR imtuvo su nuotolinio valdymo pultu, garsinės signalizacijos įtaiso, DS3231 realaus laiko modulio, termistoriaus, LCD ir, žinoma, duonos lentos bei „Arduino“ su suderintais trumpikliais.
- Pirmiausia teisingai prijunkite maitinimo šaltinį prie lentos ir įsitikinkite, kad jis abiejose pusėse yra nustatytas 5 voltams.
- Prijunkite infraraudonųjų spindulių imtuvą prie pliuso ir minuso juostų ir prie 3 kaiščio.
- Prijunkite aktyvų garsinį signalą prie 13 kaiščio ir prie žemės (minuso juosta).
- DS3231 modulis taip pat yra prijungtas prie pliuso ir minuso juostų. Taip pat prijunkite SDA prie SDA ir SCL prie SCL Arduino.
- Dabar jums reikia termistoriaus, kuris taip pat yra prijungtas prie 5 voltų ir prie 0 analogo per 10 kOhm varžą.
- Galiausiai turite prijungti LCD. K yra sujungtas su - ir A - +. Smeigtukai D4 – D7 jungiami prie Arduino 9–12 kaiščių. Dabar jūs turite prijungti E prie 8 kaiščio, RW prie minuso juostos ir RS prie 7 kaiščio. Prijunkite kaištį V0 prie 10 k potenciometro, kuris yra prijungtas prie 5 V ir žemės. Galiausiai prijunkite VDD prie 5 V ir VSS prie žemės.
Užprogramuokite „Arduino“ žadintuvą
Jei viską tinkamai nustatėte, galite užprogramuoti „Arduino“ žadintuvą. Tam mes parašėme nedidelį pavyzdžio kodą:
- #include #include #include #include "IRremote.h" int tempPin = 0; Laikrodis DS3231; RTCDateTime dt; „LiquidCrystal“ LCD (7, 8, 9, 10, 11, 12); vidinis imtuvas = 3; IRrecv irrecv (imtuvas); decode_results rezultatai; vidinis aliarmas; boolean alarm_state = false; Styginių valanda; Styginių paskirties_ laikas; Styginių minutė; Styginių srovės laikas; vidinis garsinis signalas = 13; void translateIR () {perjungti (rezultatai.valiuta) {atvejis 0xFFA25D: alarm_state =! alarm_state; pertrauka; // POWER korpusas 0xFFE21D: pertrauka; // FUNC / STOP atvejis 0xFF629D: pertrauka; // VOL + dėklas 0xFF22DD: pertrauka; // FAST BACK atvejis 0xFF02FD: pertrauka; // PAUZĖS atvejis 0xFFC23D: pertrauka; // FAST FORWARD atvejis 0xFFE01F: pertrauka; // DOWN byla 0xFFA857: pertrauka; // VOL- atvejis 0xFF906F: pertrauka; // UP atvejis 0xFF9867: pertrauka; // EQ atvejis 0xFFB04F: pertrauka; // ST / REPT atvejis 0xFF6897: aliarmas = 0; pridėti (); pertrauka; // 0 atvejis 0xFF30CF: aliarmas = 1; pridėti (); pertrauka; // 1 atvejis 0xFF18E7: aliarmas = 2; pridėti (); pertrauka; // 2 atvejis 0xFF7A85: aliarmas = 3; pridėti (); pertrauka; // 3 atvejis 0xFF10EF: aliarmas = 4; pridėti (); pertrauka; // 4 atvejis 0xFF38C7: aliarmas = 5; pridėti (); pertrauka; // 5 atvejis 0xFF5AA5: aliarmas = 6; pridėti (); pertrauka; // 6 atvejis 0xFF42BD: aliarmas = 7; pridėti (); pertrauka; // 7 atvejis 0xFF4AB5: aliarmas = 8; pridėti (); pertrauka; // 8 atvejis 0xFF52AD: aliarmas = 9; pridėti (); pertrauka; // 9 atvejis 0xFFFFFFFF: pertrauka; numatytasis: pertrauka; } vėlavimas (500); } void add () {paskirties_ laikas + = styga (aliarmas); } negaliojanti sąranka () {pinMode (garsinis signalas, OUTPUT); lcd.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); dviguba tempK = log (10000, 0 * ((1024, 0 / tempReading - 1))); tempK = 1 / (0, 001129148 + (0, 000234125 + (0, 0000000876741 * tempK * tempK)) * tempK); plūdės tempC = tempK - 273, 15; plūdės tempF = (tempC * 9, 0) / 5, 0 + 32, 0; dt = clock.getDateTime (); „lcd.setCursor“ (0, 0); lcd.print (laikrodžio datos formatas („dmY H: i: s“, dt)); „lcd.setCursor“ (0, 1); lcd.print (stygos (tempC) + "" + stygos ((char) 223) + "C"); if (irrecv.decode (& results)) {translateIR (); irrecv.resume (); } valanda = clock.dateFormat („H“, dt); minute = clock.dateFormat ("i", dt); dabartinis laikas = valanda + minutė; if (dabartinis_ laikas == atvykimo laikas ir & pavojaus_statis == tiesa) {pinMode (garsinis signalas, AUKŠTAS); } else {pinMode (garsinis signalas, žemas); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } else {lcd.setCursor (10, 1); lcd.print (""); } if (paskirties_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } else if (galutinio laiko laikas.length () <4) {lcd.setCursor (11, 1); lcd.print ( "tipo"); } else {lcd.setCursor (11, 1); lcd.print ( "tipo"); Destination_time = ""; } vėlavimas (1000); }
- Patarimas: nukopijuokite šį kodą į savo IDE ir pritaikykite jį pagal poreikį. Išsamų kodų eilučių paaiškinimą galite rasti mūsų nuotraukų galerijoje.
Kitame straipsnyje paaiškinsime, kaip su Arduino galite valdyti GSM modulį.