Arduino: būvē modinātāju - kā tas darbojas
Šajā praktiskajā padomā jūs uzzināsit, kā ar Arduino izveidot modinātājpulksteni. Izmantojot pareizo kodu, tas ir viegli.
Arduino: būvē modinātāju - kā tas darbojas
Arduino modinātājam ir nepieciešams barošanas avots, IR uztvērējs ar tālvadības pulti, signāls, DS3231 reālā laika modulis, termistors, LCD un, protams, maizes dēlis un Arduino ar atbilstošiem pārejas kabeļiem.
- Vispirms pareizi pievienojiet strāvas padevi maizes dēlim un pārliecinieties, vai tas ir noregulēts uz 5 voltiem abās pusēs.
- Pievienojiet infrasarkano staru uztvērēju ar plus un mīnusa joslām un ar tapu 3.
- Savienojiet aktīvo signālu ar tapu 13 un zemi (mīnus josla).
- DS3231 modulis ir savienots arī ar plus un mīnusa joslām. Pievienojiet arī SDA SDA un SCL ar SCL Arduino.
- Tagad jums ir nepieciešams termistors, kas arī ir savienots ar 5 voltiem un analogo 0, izmantojot 10 kOhm rezistoru.
- Visbeidzot, jums ir jāpievieno LCD. K ir savienots ar - un A līdz +. Tapas D4 līdz D7 savienojas ar Arduino 9 līdz 12 tapām. Tagad jums ir jāpievieno E ar 8. piespraudi, RW ar mīnus joslu un RS ar 7. piespraudi. Pievienojiet tapu V0 10 k potenciometram, kas ir savienots ar 5 V un zemējumu. Visbeidzot pievienojiet VDD 5V un VSS pie zemes.
Ieprogrammējiet Arduino modinātāju
Ja esat pareizi iestatījis visu, varat ieprogrammēt Arduino modinātāju. Tam mēs esam uzrakstījuši nelielu koda kodu:
- # iekļaut # iekļaut # iekļaut # iekļaut "IRremote.h" int tempPin = 0; Pulkstenis DS3231; RTCDateTime dt; LiquidCrystal LCD (7, 8, 9, 10, 11, 12); int uztvērējs = 3; IRrecv irrecv (uztvērējs); decode_results rezultāti; int trauksme; Būla trauksmes_stats = nepatiess; Stīgu stunda; Stīgu galamērķis_laiks; Stīgu minūte; Stīgu pašreizējais laiks; int skaņas signāls = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; pārtraukums; // POWER korpuss 0xFFE21D: pārtraukums; // FUNC / STOP gadījums 0xFF629D: pārtraukums; // VOL + korpuss 0xFF22DD: pārtraukums; // ĀTRĀ ATPAKAĻ lieta 0xFF02FD: pārtraukums; // PAUZES gadījums 0xFFC23D: pārtraukums; // FAST FORWARD lieta 0xFFE01F: pārtraukums; // LEJAS gadījums 0xFFA857: pārtraukums; // VOL- korpuss 0xFF906F: pārtraukums; // UP lieta 0xFF9867: pārtraukums; // EQ gadījums 0xFFB04F: pārtraukums; // ST / REPT gadījums 0xFF6897: trauksme = 0; pievienot (); pārtraukums; // 0 gadījums 0xFF30CF: trauksme = 1; pievienot (); pārtraukums; // 1 gadījums 0xFF18E7: trauksme = 2; pievienot (); pārtraukums; // 2 gadījums 0xFF7A85: trauksme = 3; pievienot (); pārtraukums; // 3 gadījums 0xFF10EF: trauksme = 4; pievienot (); pārtraukums; // 4 gadījums 0xFF38C7: trauksme = 5; pievienot (); pārtraukums; // 5 gadījums 0xFF5AA5: trauksme = 6; pievienot (); pārtraukums; // 6 gadījums 0xFF42BD: trauksme = 7; pievienot (); pārtraukums; // 7 gadījums 0xFF4AB5: trauksme = 8; pievienot (); pārtraukums; // 8 gadījums 0xFF52AD: trauksme = 9; pievienot (); pārtraukums; // 9 gadījums 0xFFFFFFFF: pārtraukums; noklusējums: pārtraukums; } kavēšanās (500); } void add () {galamērķa_laiks + = virkne (trauksme); } spēkā neesoša iestatīšana () {pinMode (skaņas signāls, OUTPUT); lcd.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); dubultā tempK = log (10000, 0 * ((1024, 0 / tempReading - 1))); tempK = 1 / (0, 001129148 + (0, 000234125 + (0, 0000000876741 * tempK * tempK)) * tempK); pludiņa tempC = tempK - 273, 15; pludiņa tempF = (tempC * 9, 0) / 5, 0 + 32, 0; dt = clock.getDateTime (); lcd.setCursor (0, 0); lcd.print (pulksteņa datuma formāts ("dmY H: i: s", dt)); lcd.setCursor (0, 1); lcd.print (stīgas (tempC) + "" + stīgas ((char) 223) + "C"); if (irrecv.decode (& results)) {translateIR (); irrecv.resume (); } stunda = pulkstenis.datuma formāts ("H", dt); minūte = clock.dateFormat ("i", dt); pašreizējais_laiks = stunda + minūte; if (pašreizējais_laiks == galamērķa_laiks && trauksmes_stats == patiess) {pinMode (signāls, AUGSTS); } cits {pinMode (zvana signāls, LOW); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } cits {lcd.setCursor (10, 1); lcd.print (""); } if (Destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } cits, ja (galamērķa_laika ilgums () <4) {lcd.setCursor (11, 1); lcd.print ( "TYPE"); } cits {lcd.setCursor (11, 1); lcd.print ( "TYPE"); Destination_time = ""; } kavēšanās (1000); }
- Padoms: nokopējiet šo kodu savā IDE un pielāgojiet to pēc nepieciešamības. Sīkāku kodu līniju skaidrojumu varat atrast mūsu attēlu galerijā.
Nākamajā rakstā mēs izskaidrosim, kā jūs varat kontrolēt GSM moduli ar Arduino.