Satura rādītājs:

Arduino modinātāja projekts: 14 soļi
Arduino modinātāja projekts: 14 soļi

Video: Arduino modinātāja projekts: 14 soļi

Video: Arduino modinātāja projekts: 14 soļi
Video: Top 5 Arduino Projects for Beginners. Full tutorial videos in Youtube Channel #arduino 2024, Novembris
Anonim
Arduino modinātāja projekts
Arduino modinātāja projekts

Šajā projektā mēs izmantosim Arduino Uno, lai kontrolētu LCD ekrānu, lai parādītu pašreizējo laiku un laiku, kad ir iestatīts modinātājs. Katru reizi iestatīšanai izmantosim pogas.

Materiāli:

  • Arduino Uno -
  • Maizes dēlis -
  • Džemperu vadi (x13+) -
  • 10 kohm rezistori (x4) -
  • LCD ekrāns -
  • 7 pogas-https://vilros.com/collections/raspberry-pi-acces…
  • Pjezo skaļrunis -

1. darbība: savienošanas instrukcijas

Pieslēgšanās instrukcijas
Pieslēgšanās instrukcijas

1. Pievienojiet džempera vadu no 5 V tapas uz Arduino ar vienu no + sliedēm uz maizes dēļa.

2. darbība:

Attēls
Attēls

2. Pievienojiet pārejas vadu no Arduino GND tapas pie sliedes blakus + sliedei, kuru izvēlējāties uz maizes dēļa.

3. darbība:

Attēls
Attēls

3. Savienojiet LCD ekrānu ar strāvu, zemējumu un TX tapu (1. tapa).

4. solis:

Attēls
Attēls

4. Novietojiet 7 pogas uz maizes dēļa ar kājām pāri maizes dēļa spraugai.

5. darbība:

Attēls
Attēls

5. Novietojiet 10 kohm rezistorus no sliedes ar GND tapu, kas tai pievienota, uz pogu apakšējām kreisajām tapām.

6. darbība

Attēls
Attēls

6. Novietojiet džemperu vadus starp pogu apakšējo labo tapu un maizes dēļa 5V sliedi.

7. darbība:

Attēls
Attēls

7. Novietojiet džemperu vadus starp tapām 6, pēc tam 8-13 un tapu uz pogas, kurai ir pievienots rezistors.

8. darbība

Attēls
Attēls

8. Pēc tam novietojiet Piezo skaļruni uz maizes dēļa un pievienojiet 7. tapu pie strāvas tapas, pēc tam 100 omu rezistoru pie zemes.

9. solis: Programmēšanas instrukcijas

1. Pārskats: Šis projekts prasīs lietotājam iestatīt pašreizējo laiku, kad displejā sākotnēji ieslēgts pašreizējais laiks un laiks, kad ir iestatīts modinātājs. Iepriekš pieslēgtās pogas tiks izmantotas, lai iestatītu katru reizi. No kreisās uz labo, tiem tiek iestatīta pašreizējā stunda, iestatīts pašreizējais minūte, iestatīts pašreizējais AM vai PM, iestatīts modinātāja stunda, iestatīta modinātāja minūte, iestatīts modinātājs AM vai PM. Pēdējā poga tiek izmantota, lai izslēgtu modinātāja skaņu.

10. darbība:

2. Pirmā lieta, kas mums jādara, ir inicializēt mūsu mainīgo, kuru mēs izmantosim.

// Inicializējiet izmantojamos mainīgos stundā = 0; // Stunda pašreizējam laikam int minūti = 0; //

Pašreizējā laika minūte int sekundē = 0; // Otrais pašreizējam laikam

int stunda_a = 0; int // Stunda modinātāja laikam

minūte_a = 0; // Minūte modinātāja laikam

bool am_pm = false; // AM/PM pārslēgšanas karodziņš. False ir AM, True ir PM

bool am_pm_a = nepatiess; // AM/PM pārslēgšanas karodziņš trauksmei. False ir AM, True ir PM

int set_hr = 13; // Izmantojiet tapu 13, lai iestatītu stundu

int set_min = 12; // Izmantojiet tapu 12, lai iestatītu minūtes int

set_am_pm = 11; // Izmantojiet 11. tapu, lai iestatītu am/pm

int set_hr_a = 10; // Izmantojiet tapu 10, lai iestatītu modinātāja stundu int set_min_a = 9; // Izmantojiet tapu 9, lai iestatītu modinātāja minūti int set_am_pm_a = 8; // Izmantojiet tapu 8, lai iestatītu modinātāju am/pm

int runātājs = 7; // Piespraude, ko izmantot skaļrunimkluss = 6; // Piespraust, lai apturētu skaļruni

bool signalizācija = nepatiesa; // Atzīmējiet, lai pārslēgtos, lai saglabātu satraukumu

bool quieted = nepatiess; // Karogs, kas rāda klusumu, nav nospiests

int cur_time = 0; // Mainīgais pašreizējam laikam

int etime = 0; // Mainīgais laiks

11. darbība:

3. Tālāk mums ir jāiestata LCD ekrāns un jāpasaka lietotājam iestatīt pašreizējo laiku. Tā kā tas ir jādara tikai vienu reizi, mēs to darīsim iestatīšanas režīmā.

void setup () {

// LCD ekrāna iestatīšana

Sērijas sākums (9600); // Inicializēt seriālu ar 9600 baudām

Sērijas.rakstīt (17); // Ieslēdziet aizmugurējo apgaismojumu

Serial.write (24); // Ieslēdziet displeju ar kursoru un nemirgo

Serial.write (12); // Notīriet ekrānu

Serial.write (128); // Pārvietot kursoru uz augšējo kreiso stūri // Iestatīt pinModes pinMode (set_hr, IEEJA); 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 (skaļrunis, OUTPUT);

pinMode (kluss, INPUT);

// Ieslēdzot sākotnējo jaudu, ļaujiet lietotājam iestatīt pašreizējo laiku. Serial.print ("Iestatīt pašreizējo laiku"); kavēšanās (2000);

Serial.write (12);

printTimes ();

cur_time = milis (); // Saglabāt pašreizējo laiku}

12. solis:

4. Pēc tam cilpas režīmā mēs izsekojam laiku un lasām pogas statusu, lai redzētu, vai lietotājs iestata kādu no laikiem.

void loop () {

// Saglabājiet laiku

keepTime ();

// Pārbaudiet, vai ir pienācis laiks trauksmei!

if ((stunda == stunda_a && minūte == minūte_a &&! apklusināta) || modinātājs) {tonis (runātājs, 2000, 500); // izvada skaļrunī 2000 Hz skaņu 500 ms

kavēšanās (500); // Aizkavējiet 500 ms, ja (! Signalizācija) {// Ja modinātājs ir izslēgts, ieslēdziet to

}

}

// Ja lietotājs apklusina trauksmi, nospiežot klusuma pogu, pārtrauciet satraukt, ja (alarm &&! Quieted && digitalRead (kluss)) {

trauksme = nepatiesa;

apklusināts = taisnība; }

// Atiestatīt modinātāju, ja (! Alarm && quieted && minute! = Minute_a) {quieted = false;

}

// Pārbaudiet, vai iestatītās tapas ir augstas, un, ja tā, palieliniet atbilstošo vērtībuif (digitalRead (set_hr) && stunda <12) {

stunda ++;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

cits {}

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

minūti ++; printTimes ();

debounce ();

}

cits if (digitalRead (set_min) && minute == 59) {minute = 0;

printTimes ();

debounce ();

}

cits {} ja (digitalRead (set_am_pm) && am_pm) {

am_pm = nepatiess;

printTimes ();

debounce ();

}

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

debounce ();

}

cits {} ja (digitalRead (set_hr_a) && hour_a <12) {

stunda_a ++;

printTimes ();

debounce ();

}

cits if (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

debounce ();

}

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

minute_a ++;

printTimes ();

debounce ();

}

citādi, ja (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

debounce ();

}

cits {} ja (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = nepatiess;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

cits {}

}

13. darbība

5. Šeit jūs pamanīsit pāris manis izveidotās apakšprogrammas - debounce () un printTimes (). Debounce () tiek izmantots, lai pārliecinātos, ka pogas lasām tikai vienu reizi. Tā kā Arduino skenē tūkstošiem reižu sekundē, tas var domāt, ka poga tika nospiesta vairākas reizes, kad jūs to paredzējāt lasīt tikai vienu reizi. Debounce () iesaldēs programmu, līdz poga tiks atlaista. printTimes () atjaunina LCD ekrānu, bet, tā kā tās bija vairākas komandas, es tās vienu reizi ierakstīju un pēc tam varu izsaukt apakšprogrammu jebkurā laikā, kad mainās laika vērtība.

// Kamēr tiek nospiesta kāda no pogām, palieciet šajā funkcijā un aizkavējiet 250 ms.

void debounce () {

kamēr (digitalRead (set_hr) || digitalRead (set_min) ||

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

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

}

// Izdrukā atjauninātos laikus, ja ir kādas izmaiņas

void printTimes () {

Serial.write (12);

Serial.print ("Pašreizējais laiks:");

Sērijas.rakstīt (148);

ja (stunda <10) {

Serial.print ("0");

}

Sērijas nospiedums (stunda);

Serial.print (":");

ja (minūte <10) {

Sērijas nospiedums ("0");

}

Sērijas nospiedums (minūte); Sērijas nospiedums (":");

ja (otrais <10) {

Serial.print ("0");

}

Sērijas nospiedums (otrais);

ja (am_pm) {

Serial.print ("PM");

}

cits {

Serial.print ("AM");

}

Sērijas.rakstīt (168);

Serial.print ("Modinātāja komplekts:");

Sērijas.rakstīt (188);

ja (stunda_a <10) {

Serial.print ("0");

}

Sērijas nospiedums (stunda_a);

Serial.print (":");

ja (minute_a <10) {

Sērijas nospiedums ("0");

}

Serial.print (minute_a);

ja (am_pm_a) {

Serial.print ("PM");

}

cits {

Serial.print ("AM");

}

}

// Palieliniet laika parametrus

keepTime () {

etime = milis () - cur_time;

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

otrais ++;

cur_time = milis ();

printTimes ();

}

citādi, ja (etime> = 1000 && second == 59 && minute <59) {second = 0;

minūte ++;

cur_time = milis ();

printTimes ();

}

citādi, ja (etime> = 1000 && second == 59 && minute == 59 && hour <12) {

otrais = 0; minūte =

0; stunda ++; cur_time =

milis (); printTimes ();

}

citādi, ja (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

otrais = 0; minūte =

0; stunda = 1; am_pm =

! am_pm;

cur_time = milis ();

printTimes ();

}

cits {}

}

14. darbība:

6. Tā tas ir!

Apkopojiet un augšupielādējiet, un esat pabeidzis!

Ieteicams: