Sadržaj:

Projekt budilnika Arduino: 14 koraka
Projekt budilnika Arduino: 14 koraka

Video: Projekt budilnika Arduino: 14 koraka

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

U ovom ćemo projektu koristiti Arduino Uno za upravljanje LCD zaslonom za prikaz trenutnog vremena i vremena za koje je alarm postavljen. Svaki put ćemo koristiti gumbe za postavljanje.

Materijali:

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

Korak 1: Upute za spajanje

Upute za spajanje
Upute za spajanje

1. Spojite kratkospojnu žicu s 5V pina na Arduinu na jednu od + tračnica na ploči.

Korak 2:

Slika
Slika

2. Spojite kratkospojnu žicu s GND pina na Arduinu na - vodilicu pored + tračnice koju ste odabrali na ploči.

3. korak:

Slika
Slika

3. Spojite LCD zaslon na napajanje, uzemljenje i TX pin (pin 1).

Korak 4:

Slika
Slika

4. Postavite 7 gumba na ploču s nogama preko razmaka na ploči s kruhom.

5. korak:

Slika
Slika

5. Postavite 10 kohm otpornika s - vodilice sa spojenim GND pinom na donje lijeve pinove gumba.

Korak 6:

Slika
Slika

6. Postavite kratkospojne žice između donjeg desnog zatiča gumba i 5V šine na vašoj ploči.

Korak 7:

Slika
Slika

7. Postavite kratkospojne žice između pinova 6, zatim 8-13 i pina na gumbu na koji je priključen otpornik.

Korak 8:

Slika
Slika

8. Zatim postavite svoj Piezo zvučnik na ploču i spojite iglu 7 na utičnicu za napajanje, a zatim otpornik od 100 ohma na masu.

Korak 9: Upute za programiranje

1. Pregled: Ovaj će projekt od korisnika zatražiti da na zaslonu prikaže trenutno vrijeme i vrijeme na koje je alarm postavljen. Gore spojeni gumbi će se koristiti za podešavanje svaki put. S lijeva na desno postavljaju se trenutni sat, trenutna minuta, trenutni AM ili PM, sat alarma, minuta alarma, alarm AM ili PM. Posljednji gumb koristi se za utišavanje alarma kada se oglasi.

10. korak:

2. Prvo što moramo učiniti je inicijalizirati našu varijablu koju ćemo koristiti.

// Inicijaliziraj varijable koje će se koristitiint hour = 0; // Sat za trenutno vrijeme int minuta = 0; //

Minuta za trenutno vrijeme int sekunda = 0; // Drugi za trenutno vrijeme

int sat_a = 0; int // Sat za vrijeme alarma

minuta_a = 0; // Minuta za vrijeme alarma

bool am_pm = false; // Zastavica za prebacivanje AM/PM. Lažno je AM, Tačno je PM

bool am_pm_a = false; // AM/PM preklopna zastavica za alarm. Lažno je AM, Tačno je PM

int set_hr = 13; // Pomoću iglice 13 postavite sat

int set_min = 12; // Upotrijebite pin 12 za postavljanje minute int

set_am_pm = 11; // Pomoću pina 11 postavite am/pm

int set_hr_a = 10; // Pomoću pina 10 postavite sat za alarm int set_min_a = 9; // Pomoću pina 9 postavite minute za alarm int set_am_pm_a = 8; // Pomoću pina 8 postavite am/pm za alarm

int zvučnik = 7; // Pin za korištenje za speakerint quiet = 6; // Prikvačite za zaustavljanje zvučnika

bool alarm = false; // Označite za uključivanje/ isključivanje kako biste bili alarmantni

bool utišan = netočno; // Zastava koja pokazuje tišinu nije pritisnuta

int cur_time = 0; // Varijabla za trenutno vrijeme

int etime = 0; // Varijabla za proteklo vrijeme

11. korak:

3. Zatim moramo postaviti LCD zaslon i reći korisniku da postavi trenutno vrijeme. Budući da je to potrebno učiniti samo jednom, to ćemo učiniti u rutini postavljanja.

void setup () {

// Postavljanje LCD zaslona

Serial.begin (9600); // Pokreni serijski broj na 9600 bauda

Serial.write (17); // Uključite stražnje svjetlo

Serial.write (24); // Uključite zaslon, bez pokazivača i bez treptanja

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

Serial.write (128); // Pomaknite kursor u gornji lijevi kut // Postavite pinModes pinMode (set_hr, ULAZNI); 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 (zvučnik, OUTPUT);

pinMode (tih, ULAZ);

// Na početnom napajanju, korisnik mora postaviti trenutno vrijeme. Serial.print ("Postavi trenutno vrijeme"); odgoda (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Spremi trenutno vrijeme}

Korak 12:

4. Zatim, u rutini petlje, pratimo vrijeme i čitamo stanje gumba kako bismo provjerili postavlja li korisnik bilo koje vrijeme.

void loop () {{100} {101}

// Zadrži vrijeme

keepTime ();

// Provjerite je li vrijeme za alarm!

if ((sat == hour_a && minute == minute_a &&! utišan) || alarm) {ton (zvučnik, 2000, 500); // Zvučnik reproducira zvuk od 2000 Hz tijekom 500 ms

kašnjenje (500); // Odgoda 500 ms ako (! Alarm) {// Ako je alarm isključen, uključite ga

}

}

// Ako korisnik utiša alarm pritiskom na tipku za tiho, prestanite alarmirati if (alarm &&! Utišan && digitalRead (tih)) {

alarm = lažno;

utišan = istina; }

// Poništite alarm ako (! Alarm && utišan && minute! = Minute_a) {quieted = false;

}

// Provjerite jesu li postavljeni pinovi visoki, pa ako je tako, povećajte odgovarajuću vrijednostif (digitalRead (set_hr) && hour <12) {

sat ++;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

drugo{}

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

minuta ++; printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

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

am_pm = false;

printTimes ();

debounce ();

}

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

debounce ();

}

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

sat_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) {

minuta_a ++;

printTimes ();

debounce ();

}

else 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 = netočno;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

drugo{}

}

Korak 13:

5. Ovdje ćete primijetiti nekoliko potprograma koje sam stvorio - debounce () i printTimes (). Debounce () se koristi kako bismo bili sigurni da gumbe čitamo samo jednom. Budući da Arduino skenira tisuće puta u sekundi, može pomisliti da je gumb pritisnut nekoliko puta kad ste namjeravali pročitati samo jednom. Debounce () će zamrznuti program dok se gumb ne otpusti. printTimes () ažurira LCD zaslon, ali budući da je to bilo nekoliko naredbi, upisao sam ih jednom i tada mogu pozvati potprogram kad god se promijeni vrijednost vremena.

// Dok je bilo koji gumb pritisnut, ostanite u ovoj funkciji, a zatim odgodite 250 ms.

void debounce () {

while (digitalRead (set_hr) || digitalRead (set_min) ||

digitalno čitanje (set_am_pm) || digitalno čitanje (set_hr_a) ||

digitalno čitanje (set_min_a) || digitalRead (set_am_pm_a)) {} kašnjenje (250);

}

// Ispisuje ažurirano vrijeme ako ima promjena

void printTimes () {

Serial.write (12);

Serial.print ("Trenutno vrijeme:");

Serial.write (148);

if (sat <10) {

Serial.print ("0");

}

Serijski.tisak (sat);

Serial.print (":");

if (minuta <10) {

Serial.print ("0");

}

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

if (drugi <10) {

Serial.print ("0");

}

Serijski.ispis (drugi);

if (am_pm) {

Serial.print ("PM");

}

drugo{

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Alarmni set za:");

Serial.write (188);

ako (sat_a <10) {

Serial.print ("0");

}

Serijski.tisak (sat_a);

Serial.print (":");

if (minuta_a <10) {

Serial.print ("0");

}

Serijski.ispis (minuta_a);

ako (am_pm_a) {

Serial.print ("PM");

}

drugo{

Serial.print ("AM");

}

}

// Povećanje vremenskih parametara void

keepTime () {

etime = millis () - vrijeme_vremena;

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

drugi ++;

cur_time = millis ();

printTimes ();

}

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

minuta ++;

cur_time = millis ();

printTimes ();

}

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

drugi = 0; minuta =

0; sat ++; vrijeme_vremena =

milis (); printTimes ();

}

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

drugi = 0; minuta =

0; sat = 1; am_pm =

!prijepodne posljepodne;

cur_time = millis ();

printTimes ();

}

drugo{}

}

Korak 14:

6. To je to!

Sastavite i prenesite i gotovi ste!

Preporučeni: