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, Novembar
Anonim
Arduino projekt budilnika
Arduino projekt budilnika

U ovom projektu ćemo koristiti Arduino Uno za kontrolu LCD ekrana kako bismo prikazali trenutno vrijeme i vrijeme za koje je alarm postavljen. Svaki put ćemo koristiti dugmad za podešavanje.

Materijali:

  • Arduino Uno -
  • Breadboard -
  • Žice kratkospojnika (x13+) -
  • 10 kohm otpornika (x4) -
  • LCD ekran -
  • 7 dugmadi-https://vilros.com/collections/raspberry-pi-acces…
  • Piezo zvučnik -

Korak 1: Upute za spajanje

Upute za spajanje
Upute za spajanje

1. Spojite kratkospojnik sa 5V pina na Arduinu na jednu od + šina na matičnoj ploči.

Korak 2:

Image
Image

2. Spojite kratkospojnik sa GND pina na Arduinu na - šinu pored + šine koju ste odabrali na ploči.

Korak 3:

Image
Image

3. Priključite LCD ekran na napajanje, uzemljenje i TX pin (pin 1).

Korak 4:

Image
Image

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

Korak 5:

Image
Image

5. Postavite 10 kohm otpornika sa - šine sa spojenim GND pinom na donje lijeve pinove dugmadi.

Korak 6:

Image
Image

6. Postavite kratkospojne žice između donjeg desnog igla dugmadi i 5V šine na vašoj ploči za izradu ploča.

Korak 7:

Image
Image

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

Korak 8:

Image
Image

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

Korak 9: Upute za programiranje

1. Pregled: Ovaj projekat će od korisnika tražiti da na ekranu prikaže trenutno vrijeme i vrijeme na koje je alarm postavljen. Gore spojeni tasteri će se koristiti za podešavanje svaki put. S lijeva na desno, oni postavljaju trenutni sat, trenutnu minutu, trenutni AM ili PM, postavljaju sat alarma, postavljaju minute alarma, postavljaju alarm AM ili PM. Posljednje dugme koristi se za utišavanje alarma kada se oglasi.

Korak 10:

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

// Inicijalizacija varijabli 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 hour_a = 0; int // Sat za vrijeme alarma

minute_a = 0; // Minuta za vrijeme alarma

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

bool am_pm_a = false; // AM/PM prekidač za alarm. Netačno je AM, Tačno je PM

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

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

set_am_pm = 11; // Koristite pin 11 za postavljanje 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 upotrebu za speakerint quiet = 6; // Zakačite za zaustavljanje zvučnika

bool alarm = false; // Označite za uključivanje/ isključivanje radi neprekidnog alarmiranja

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

int cur_time = 0; // Varijabla za trenutno vrijeme

int etime = 0; // Varijabla za proteklo vrijeme

Korak 11:

3. Zatim moramo postaviti LCD ekran 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 ekrana

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

Serial.write (17); // Uključite pozadinsko svjetlo

Serial.write (24); // Uključite ekran, bez kursora i bez treptanja

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

Serial.write (128); // Pomaknite kursor u gornji lijevi kut // Postavite pinModes pinMode (set_hr, INPUT); 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 (tiho, INPUT);

// Na početnom napajanju, korisnik mora postaviti trenutno vrijeme. Serial.print ("Podesite trenutno vreme"); kašnjenje (2000);

Serial.write (12);

printTimes ();

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

Korak 12:

4. Zatim, u rutini petlje, pratimo vrijeme i čitamo status dugmeta da vidimo da li korisnik postavlja 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); // Emitira zvučnik od 2000 Hz na zvučnik 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 = tačno; }

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

}

// Provjerite da li postavljeni pinovi idu visoko, 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) && minuta <59) {

minute ++; 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) {

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

}

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 = false;

printTimes ();

debounce ();

}

else 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 za provjeru da li tipke čitamo samo jednom. Budući da Arduino skenira tisuće puta u sekundi, može pomisliti da je tipka pritisnuta nekoliko puta kada ste namjeravali pročitati samo jednom. Debounce () će zamrznuti program dok se dugme ne otpusti. printTimes () ažurira LCD ekran, ali budući da je to bilo nekoliko naredbi, otkucao sam ih jednom i tada mogu pozvati potprogram kad god se promijeni vrijednost vremena.

// Dok je neko od dugmadi pritisnuto, ostanite u ovoj funkciji, a zatim odgodite 250 ms.

void debounce () {

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

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

digitalRead (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");

}

Serial.print (sat);

Serial.print (":");

if (minuta <10) {

Serial.print ("0");

}

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

if (drugo <10) {

Serial.print ("0");

}

Serial.print (drugi);

if (am_pm) {

Serial.print ("PM");

}

else {

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Alarm postavljen za:");

Serial.write (188);

if (sat_a <10) {

Serial.print ("0");

}

Serial.print (hour_a);

Serial.print (":");

if (minuta_a <10) {

Serial.print ("0");

}

Serial.print (minute_a);

if (am_pm_a) {

Serial.print ("PM");

}

else {

Serial.print ("AM");

}

}

// Povećanje vremenskih parametara void

keepTime () {

etime = millis () - cur_time;

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

second ++;

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

druga = 0; minuta =

0; sat ++; cur_time =

millis (); printTimes ();

}

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

druga = 0; minuta =

0; sat = 1; am_pm =

! am_pm;

cur_time = millis ();

printTimes ();

}

drugo {}

}

Korak 14:

6. to je to!

Sastavite i prenesite i sve ste završili!

Preporučuje se: