Kazalo:

Projekt budilke Arduino: 14 korakov
Projekt budilke Arduino: 14 korakov

Video: Projekt budilke Arduino: 14 korakov

Video: Projekt budilke Arduino: 14 korakov
Video: ПЕРВАЯ СХЕМА НА АРДУИНО [Уроки Arduino #4] 2024, November
Anonim
Projekt budilke Arduino
Projekt budilke Arduino

V tem projektu bomo uporabili Arduino Uno za nadzor LCD zaslona za prikaz trenutnega časa in časa, za katerega je nastavljen alarm. Za nastavitev bomo vsakič uporabili gumbe.

Materiali:

  • Arduino Uno -
  • Breadboard -
  • Jumper žice (x13+) -
  • 10 kohm uporov (x4) -
  • LCD zaslon -
  • 7 gumbov-https://vilros.com/collections/raspberry-pi-acces…
  • Piezo zvočnik -

1. korak: Navodila za priključitev

Navodila za priključitev
Navodila za priključitev

1. Priključite mostični kabel s 5V zatiča na Arduinu na eno od + tirnic na plošči.

2. korak:

Slika
Slika

2. Povežite mostiček z zatiča GND na Arduinu z - tirnico poleg + tirnice, ki ste jo izbrali na plošči.

3. korak:

Slika
Slika

3. Priključite zaslon LCD na napajanje, ozemljitev in pin TX (pin 1).

4. korak:

Slika
Slika

4. Postavite 7 gumbov na ploščo z nogami čez režo na plošči.

5. korak:

Slika
Slika

5. 10 -komski upor postavite s tirnice s priključkom GND na spodnje leve nožice gumbov.

6. korak:

Slika
Slika

6. Postavite mostične žice med spodnji desni zatič gumbov in 5 -voltno letev na vaši plošči.

7. korak:

Slika
Slika

7. Postavite mostične žice med zatiče 6, nato 8-13 in zatič na gumbu, na katerega je priključen upor.

8. korak:

Slika
Slika

8. Nato postavite svoj Piezo zvočnik na ploščo in priključite zatič 7 na napajalni zatič, nato pa 100 ohmski upor na maso.

9. korak: Navodila za programiranje

1. Pregled: Ta projekt bo od uporabnika zahteval, da na prikazovalniku nastavi trenutni čas trenutnega časa in čas, za katerega je alarm nastavljen. Zgoraj povezani gumbi bodo vsakič uporabljeni za nastavitev. Od leve proti desni so nastavljene trenutne ure, nastavljene trenutne minute, trenutni AM ali PM, nastavljene ure alarma, nastavljene minute alarma, nastavljene alarme AM ali PM. Zadnji gumb se uporablja za utišanje alarma, ko se oglasi.

10. korak:

2. Prva stvar, ki jo moramo storiti, je, da inicializiramo spremenljivko, ki jo bomo uporabili.

// Začetek uporabe spremenljivkintour = 0; // Ura za trenutni čas int minuta = 0; //

Minuta za trenutni čas int sekunda = 0; // Drugi za trenutni čas

int ura_a = 0; int // Ura za čas alarma

minuta_a = 0; // Minuta za čas alarma

bool am_pm = false; // preklopna zastavica AM/PM. Napačno je AM, res je PM

bool am_pm_a = false; // Preklopna zastavica AM/PM za alarm. Napačno je AM, res je PM

int set_hr = 13; // Z nastavkom 13 nastavite uro

int set_min = 12; // Za nastavitev minute int uporabite pin 12

set_am_pm = 11; // Uporabite pin 11 za nastavitev am/pm

int set_hr_a = 10; // Uporabite pin 10 za nastavitev ure za alarm int set_min_a = 9; // Uporabite pin 9 za nastavitev minute za alarm int set_am_pm_a = 8; // Z pin 8 nastavite am/pm za alarm

int zvočnik = 7; // Pin za zvočnike tiho = 6; // Pripnite, da zaustavite zvočnik

bool alarm = false; // Označite, da preklopite, da ostanete alarmantni

bool utišan = napačno; // Zastava, ki prikazuje tišino, ni bila pritisnjena

int cur_time = 0; // Spremenljivka za trenutni čas

int etime = 0; // Spremenljivka za pretečeni čas

11. korak:

3. Nato moramo nastaviti LCD zaslon in uporabniku povedati, da nastavi trenutni čas. Ker je to treba storiti le enkrat, bomo to storili v nastavitveni rutini.

void setup () {

// Nastavitev LCD zaslona

Serial.begin (9600); // Inicializirajte serijsko serijo pri 9600 baud

Serial.write (17); // Vklopite zadnjo luč

Serial.write (24); // Vklopite zaslon s kazalcem in brez utripanja

Serial.write (12); // Počistite zaslon

Serial.write (128); // Premakni kazalec v zgornji levi kot // Nastavi pinModes pinMode (set_hr, VHOD); 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 (zvočnik, IZHOD);

pinMode (tiho, VHOD);

// Pri začetnem napajanju naj uporabnik nastavi trenutni čas. Serial.print ("Nastavi trenutni čas"); zamuda (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Shrani trenutni čas}

12. korak:

4. Nato v rutini zanke spremljamo čas in beremo stanje gumbov, da vidimo, ali uporabnik nastavi enega od časov.

void loop () {

// Držite čas

keepTime ();

// Preverite, ali je čas za alarm!

če ((ura == ura_a && minuta == minuta_a &&! utišana) || alarm) {ton (zvočnik, 2000, 500); // Predvajamo zvok 2000 Hz v zvočnik za 500 ms

zamuda (500); // Zakasnitev 500 ms, če (! Alarm) {// Če je alarm izklopljen, ga vklopite

}

}

// Če uporabnik utiša alarm s pritiskom na tihi gumb, preneha z alarmiranjem if (alarm &&! Utišan && digitalRead (tih)) {

alarm = napačno;

utišan = res; }

// Ponastavi alarm, če (! Alarm && utišan && minute! = Minute_a) {quieted = false;

}

// Preverite, ali so nastavljeni zatiči visoki, in če je tako, povečajte ustrezno vrednost if (digitalRead (set_hr) && hour <12) {

ura ++;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

drugo {}

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

minute ++; printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

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

am_pm = false;

printTimes ();

debounce ();

}

sicer če (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

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

ura_a ++;

printTimes ();

debounce ();

}

else 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 ();

}

sicer if (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

debounce ();

}

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

am_pm_a = false;

printTimes ();

debounce ();

}

sicer če (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

debounce ();

}

drugo {}

}

13. korak:

5. Tu boste opazili nekaj podprogramov, ki sem jih ustvaril - debounce () in printTimes (). Debounce () se uporablja za zagotovitev, da gumbe preberemo samo enkrat. Ker Arduino skenira tisočkrat na sekundo, se mu morda zdi, da je bil gumb večkrat pritisnjen, ko ste nameravali prebrati le enkrat. Debounce () bo zamrznil program, dokler se gumb ne sprosti. printTimes () posodobi LCD zaslon, ker pa je bilo to več ukazov, sem jih enkrat vtipkal in nato lahko kadar koli pokličem podprogram, če se vrednost časa spremeni.

// Medtem ko pritisnete kateri koli gumb, ostanite v tej funkciji in nato zakasnite 250 ms.

void debounce () {

medtem ko (digitalRead (set_hr) || digitalRead (set_min) ||

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

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

}

// Natisne posodobljene ure, če pride do sprememb

void printTimes () {

Serial.write (12);

Serial.print ("Trenutni čas:");

Serial.write (148);

če (ura <10) {

Serial.print ("0");

}

Serijski.tisk (ura);

Serial.print (":");

če (minuta <10) {

Serial.print ("0");

}

Serial.print (minuta); Serial.print (":");

if (drugo <10) {

Serial.print ("0");

}

Serial.print (drugi);

če (am_pm) {

Serial.print ("PM");

}

drugače {

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Nastavitev alarma za:");

Serial.write (188);

če (ura_a <10) {

Serial.print ("0");

}

Serial.print (ura_a);

Serial.print (":");

če (minuta_a <10) {

Serial.print ("0");

}

Serial.print (minute_a);

če (am_pm_a) {

Serial.print ("PM");

}

drugače {

Serial.print ("AM");

}

}

// Povečanje časovnih parametrov void

keepTime () {

etime = millis () - čas_toka;

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

drugi ++;

cur_time = millis ();

printTimes ();

}

sicer if (etime> = 1000 && second == 59 && minute <59) {second = 0;

minuta ++;

cur_time = millis ();

printTimes ();

}

sicer if (etime> = 1000 && second == 59 && minute == 59 && hour <12) {

drugi = 0; minuta =

0; ura ++; cur_time =

milis (); printTimes ();

}

sicer if (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

drugi = 0; minuta =

0; ura = 1; am_pm =

!dopoldne Popoldne;

cur_time = millis ();

printTimes ();

}

drugo {}

}

14. korak:

6. To je to!

Sestavite in naložite in končali ste!

Priporočena: