Sisukord:

Arduino äratuskella projekt: 14 sammu
Arduino äratuskella projekt: 14 sammu

Video: Arduino äratuskella projekt: 14 sammu

Video: Arduino äratuskella projekt: 14 sammu
Video: LDmicro 17: Хитрости редактирования в LDmicro-1 (лестничное программирование ПЛК микроконтроллера с помощью LDmicro) 2024, November
Anonim
Arduino äratuskella projekt
Arduino äratuskella projekt

Selles projektis kasutame Arduino Unot LCD -ekraani juhtimiseks, et näidata praegust kellaaega ja aega, mille jaoks äratus on seatud. Kasutame iga kord seadistamiseks nuppe.

Materjalid:

  • Arduino Uno -
  • Leivalaud -
  • Jumper Traadid (x13+) -
  • 10 kohm takistit (x4) -
  • LCD -ekraan -
  • 7 nuppu-https://vilros.com/collections/raspberry-pi-acces…
  • Piezo kõlar -

Samm: ühendamisjuhised

Ühendamise juhised
Ühendamise juhised

1. Ühendage Arduino 5V tihvtilt hüppajajuhe ühe leivaplaadi + rööpaga.

2. samm:

Pilt
Pilt

2. Ühendage Arduino GND tihvtilt hüppajajuhe leivaplaadil valitud + rööpa kõrval oleva rööpaga.

3. samm:

Pilt
Pilt

3. Ühendage LCD -ekraan toite-, maandus- ja TX -tihvtiga (tihvt 1).

4. samm:

Pilt
Pilt

4. Asetage 7 nuppu leivaplaadile, jalad üle leivalaua pilu.

5. samm:

Pilt
Pilt

5. Asetage rööbast 10 kohm -takistit, mille külge on ühendatud GND -tihvt, nuppude vasakpoolsesse alumisse kontakti.

6. samm:

Pilt
Pilt

6. Asetage hüppaja juhtmed nuppude parema alumise tihvti ja leivaplaadi 5V rööpa vahele.

7. samm:

Pilt
Pilt

7. Asetage hüppaja juhtmed tihvtide 6, seejärel 8-13 ja nupu tihvti vahele, millega takisti on ühendatud.

8. samm:

Pilt
Pilt

8. Seejärel asetage oma Piezo kõlar leivaplaadile ja ühendage tihvt 7 toitepistikuga, seejärel maandage 100 oomi takisti.

9. samm: programmeerimisjuhised

1. Ülevaade: see projekt palub kasutajal määrata ekraanil esmakordsel sisselülitamisel praeguse kellaaja ja äratuse kellaaja. Ülaltoodud nuppe kasutatakse iga kord seadistamiseks. Vasakult paremale on seadistatud praegune tund, praegune minut, praegune AM või PM, äratustund, äratusminut, äratus AM või PM. Viimast nuppu kasutatakse alarmi vaigistamiseks, kui see kõlab.

10. samm:

2. Esimene asi, mida peame tegema, on lähtestada muutuja, mida hakkame kasutama.

// Initsialiseerige kasutatavad muutujadtunnis = 0; // Tund praegusele ajale int minut = 0; //

Praeguse aja minut sekundis = 0; // Praeguse aja teine

int tund_a = 0; int // Tund äratusaega

minut_a = 0; // Äratuse aja minut

bool am_pm = vale; // AM/PM lülituslipp. False on AM, tõsi on PM

bool am_pm_a = vale; // AM/PM lüliti alarm. False on AM, tõsi on PM

int set_hr = 13; // Tunni määramiseks kasutage tihvti 13

int set_min = 12; // Kasutage tihvti 12, et määrata minutite int

set_am_pm = 11; // Kasutage tihvti 11, et määrata am/pm

int set_hr_a = 10; // Kasutage tihvti 10, et määrata häire tund int set_min_a = 9; // Kasutage tihvti 9 äratuse minuti määramiseks int set_am_pm_a = 8; // Kasutage tihvti 8, et määrata äratus am/pm

int kõneleja = 7; // Kõlarite jaoks kasutatav tihvt vaikne = 6; // Kinnita kõneleja peatamiseks

bool alarm = vale; // Märguande vahetamiseks, et hoida murettekitavat

bool vaikseks = vale; // Vaiksust tähistavat lippu pole vajutatud

int cur_time = 0; // Muutuja praeguse aja kohta

int etime = 0; // Muutuv aeg

11. samm:

3. Järgmisena peame seadistama LCD -ekraani ja ütlema kasutajale hetkeaja seadmise. Kuna seda tuleb teha ainult üks kord, teeme seda seadistusrutiinis.

tühine seadistus () {

// LCD -ekraani seadistamine

Seriaalne algus (9600); // Initsialiseeri jada kiirusel 9600 baud

Seriaalne.kirjutamine (17); // Lülitage taustvalgus sisse

Serial.write (24); // Lülitage ekraan sisse, kursoriga ja vilkumata

Serial.write (12); // Kustuta ekraan

Serial.write (128); // Liiguta kursor vasakusse ülanurka // Määra pinModes pinMode (set_hr, SISEND); pinMode (set_min, INPUT);

pinMode (set_am_pm, INPUT);

pinMode (set_hr_a, INPUT);

pinMode (set_min_a, INPUT);

pinMode (set_am_pm_a, INPUT);

pinMode (kõlar, OUTPUT);

pinMode (vaikne, INPUT);

// Esialgse sisselülitamisel laske kasutajal määrata praegune kellaaeg. Serial.print ("Määra praegune aeg"); viivitus (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Praeguse aja salvestamine}

12. samm:

4. Seejärel jälgime tsüklirutiinis aega ja loeme nuppude olekut, et näha, kas kasutaja määrab kummagi aja.

void loop () {

// Hoia aega

keepTime ();

// Kontrollige, kas on aeg äratada!

if ((tund == tund_a && minut == minut_a &&! vaigistatud) || äratus) {toon (kõneleja, 2000, 500); // 2000 Hz heli väljastamine kõlarisse 500 ms

viivitus (500); // Viivita 500 ms, kui (! Alarm) {// Kui alarm on välja lülitatud, lülita see sisse

}

}

// Kui kasutaja vaigistab alarmi vaikset nuppu vajutades, lõpetage murettekitamine, kui (alarm &&! Quieted && digitalRead (vaikne)) {

alarm = vale;

vaikne = tõsi; }

// Lähtesta äratus, kui (! Alarm && quieted && minute! = Minute_a) {quieted = false;

}

// Kontrollige, kas määratud tihvtid lähevad kõrgele ja kui jah, suurendage vastavat väärtustif (digitalRead (set_hr) && tund <12) {

tund ++;

printTimes ();

debounce ();

}

else if (digitalRead (set_hr) && hour == 12) {tund = 1;

printTimes ();

debounce ();

}

muu {}

if (digitalRead (set_min) && minut <59) {

minut ++; printTimes ();

debounce ();

}

muidu kui (digitalRead (set_min) && minute == 59) {minut = 0;

printTimes ();

debounce ();

}

else {} if (digitalRead (set_am_pm) && am_pm) {

am_pm = vale;

printTimes ();

debounce ();

}

else if (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

else {} if (digitalRead (set_hr_a) && hour_a <12) {

tund_a ++;

printTimes ();

debounce ();

}

muidu kui (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

debounce ();

}

else {} if (digitalRead (set_min_a) && minute_a <59) {

minut_a ++;

printTimes ();

debounce ();

}

muidu kui (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

debounce ();

}

else {} if (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = vale;

printTimes ();

debounce ();

}

else if (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

debounce ();

}

muu {}

}

13. samm:

5. Siin märkate paari minu loodud alamprogrammi - debounce () ja printTimes (). Debounce () kasutatakse veendumaks, et loeme nuppe ainult üks kord. Kuna Arduino skannib tuhandeid kordi sekundis, võib arvata, et nuppu vajutati mitu korda, kui kavatsesite seda lugeda ainult üks kord. Debounce () külmutab programmi, kuni nupp vabastatakse. printTimes () värskendab vedelkristallekraani, kuid kuna see oli mitu käsku, sisestasin need üks kord ja seejärel võin alamprogrammi helistada igal ajal, kui ajaväärtus muutub.

// Kui mõnda nuppu vajutatakse, hoidke seda funktsiooni ja seejärel viivitage 250 ms.

void debounce () {

samas (digitalRead (set_hr) || digitalRead (set_min) ||

digitalRead (set_am_pm) || digitalRead (set_hr_a) ||

digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} viivitus (250);

}

// Prindib uuendatud ajad, kui neid muudetakse

void printTimes () {

Serial.write (12);

Serial.print ("Praegune aeg:");

Serial.write (148);

kui (tund <10) {

Serial.print ("0");

}

Serial.print (tund);

Serial.print (":");

kui (minut <10) {

Serial.print ("0");

}

Seerianumber (minut); Seeriaprint (":");

kui (teine <10) {

Serial.print ("0");

}

Serial.print (teine);

kui (am_pm) {

Serial.print ("PM");

}

muu {

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Alarm Set for:");

Seriaalne.kirjutamine (188);

kui (tund_a <10) {

Serial.print ("0");

}

Seeria.print (tund_a);

Serial.print (":");

kui (minut_a <10) {

Serial.print ("0");

}

Serial.print (minut_a);

kui (am_pm_a) {

Serial.print ("PM");

}

muu {

Serial.print ("AM");

}

}

// Ajaparameetrite tühistamine

keepTime () {

etime = millis () - cur_time;

if (etime> = 1000 && sekund <59) {

teine ++;

cur_time = millis ();

printTimes ();

}

muidu kui (etime> = 1000 && sekund == 59 && minut <59) {sekund = 0;

minut ++;

cur_time = millis ();

printTimes ();

}

muidu kui (etime> = 1000 && sekund == 59 && minut == 59 && tund <12) {

teine = 0; minut =

0; tund ++; cur_time =

millis (); printTimes ();

}

muidu kui (etime> = 1000 && sekund == 59 && minut == 59 && tund == 12) {

teine = 0; minut =

0; tund = 1; am_pm =

! am_pm;

cur_time = millis ();

printTimes ();

}

muu {}

}

14. samm:

6. See on kõik!

Koostage ja laadige üles ning oletegi valmis!

Soovitan: