Përmbajtje:

Projekti Arduino i Alarmit: 14 Hapa
Projekti Arduino i Alarmit: 14 Hapa

Video: Projekti Arduino i Alarmit: 14 Hapa

Video: Projekti Arduino i Alarmit: 14 Hapa
Video: Arduino Проекты #14 "Матричная клавиатура" Часть I 2024, Nëntor
Anonim
Projekti Arduino Ora me Alarm
Projekti Arduino Ora me Alarm

Në këtë projekt, ne do të përdorim Arduino Uno për të kontrolluar një ekran LCD për të treguar kohën dhe kohën aktuale për të cilën është vendosur një alarm. Ne do të përdorim butona për të vendosur çdo herë.

Materiale:

  • Arduino Uno -
  • Breadboard -
  • Telat Jumper (x13+) -
  • 10 rezistente kohm (x4) -
  • Ekran LCD -
  • 7 Butona-https://vilros.com/collections/raspberry-pi-acces…
  • Altoparlanti Piezo -

Hapi 1: Udhëzimet e lidhjes

Udhëzimet e lidhjes
Udhëzimet e lidhjes

1. Lidhni një tel bluzë nga kunja 5V në Arduino në një nga + binarët në dërrasën e bukës.

Hapi 2:

Imazhi
Imazhi

2. Lidhni një tel bluzë nga kunja GND në Arduino në hekurudhën pranë shiritit + që keni zgjedhur në dërrasën e bukës.

Hapi 3:

Imazhi
Imazhi

3. Lidhni ekranin LCD me fuqinë, tokëzimin dhe kunjin TX (kunja 1).

Hapi 4:

Imazhi
Imazhi

4. Vendosni 7 butona në tryezën e bukës me këmbët përgjatë hendekut në tryezën e bukës.

Hapi 5:

Imazhi
Imazhi

5. Vendosni 10 rezistorë kohm nga shina - me kunjin GND të lidhur me të në kunjat e poshtëm të majtë të butonave.

Hapi 6:

Imazhi
Imazhi

6. Vendosni tela kërcyes midis kunjit të poshtëm të djathtë të butonave dhe shiritit 5V në tabelën tuaj të bukës.

Hapi 7:

Imazhi
Imazhi

7. Vendosni telat e kërcyesit midis kunjave 6, pastaj 8-13, dhe kunjin në butonin me të cilin është lidhur rezistenca.

Hapi 8:

Imazhi
Imazhi

8. Tjetra, vendoseni altoparlantin tuaj Piezo në dërrasën e bukës dhe lidhni pinin 7 me kunjin e rrymës, pastaj një rezistencë 100 ohm në tokë.

Hapi 9: Udhëzimet e Programimit

1. Vështrim i përgjithshëm: Ky projekt do t'i kërkojë përdoruesit të caktojë kohën aktuale në fuqinë fillestare në ekran, kohën aktuale dhe kohën për të cilën është vendosur alarmi. Butonat e lidhur më sipër do të përdoren për të vendosur çdo herë. Nga e majta në të djathtë, ato janë të caktuara për orën aktuale, për të vendosur minutën aktuale, për të vendosur AM ose PM aktuale, për të vendosur orën e alarmit, për të vendosur minutën e alarmit, për të vendosur alarmin AM ose PM. Butoni i fundit përdoret për të heshtur alarmin kur bie.

Hapi 10:

2. Gjëja e parë që duhet të bëjmë është të inicializojmë ndryshoren tonë që do të përdorim.

// Filloni variablat që do të përdoren në orë = 0; // Ora për kohën aktuale int minutë = 0; //

Minutë për kohën aktuale int e dytë = 0; // E dyta për kohën aktuale

int orë_a = 0; int // Ora për kohën e alarmit

minutë_a = 0; // Minutë për kohën e alarmit

bool am_pm = false; // AM/PM ndryshimi i flamurit. E gabuar është AM, e vërtetë është PM

bool am_pm_a = false; // AM/PM ndryshoni flamurin për alarm. E gabuar është AM, e vërtetë është PM

int set_hr = 13; // Përdorni pinin 13 për të vendosur orën

int set_min = 12; // Përdorni pin 12 për të vendosur minutën int

set_am_pm = 11; // Përdorni pinin 11 për të vendosur am/pm

int set_hr_a = 10; // Përdorni pin 10 për të vendosur orën për alarm int set_min_a = 9; // Përdorni pin 9 për të vendosur minutën për alarm int set_am_pm_a = 8; // Përdorni pin 8 për të vendosur am/pm për alarm

int altoparlant = 7; // Pin për t'u përdorur për altoparlantin e qetë = 6; // Pin për të ndaluar altoparlantin

alarm bool = false; // Flamur për ta ndryshuar për të qenë alarmant

bool heshtur = false; // Flamuri që tregon qetësinë nuk është shtypur

int kurioziteti = 0; // Ndryshore për kohën aktuale

int etime = 0; // Ndryshore për kohën e kaluar

Hapi 11:

3. Tjetra, ne duhet të vendosim ekranin LCD dhe t'i themi përdoruesit të vendosë kohën aktuale. Meqenëse kjo duhet të bëhet vetëm një herë, ne do ta bëjmë atë në rutinën e konfigurimit.

void setup () {

// Vendosni ekranin LCD

Serial.filloj (9600); // Filloni Serialin në 9600 baud

Serial.shkruaj (17); // Ndizni dritën e pasme

Serial.shkruaj (24); // Ndizni ekranin, me kursorin dhe pa ndezje syri

Serial.shkruaj (12); // Pastroni ekranin

Serial.shkruaj (128); // Zhvendos kursorin në këndin e sipërm të majtë // Vendos pinMode pinMode (set_hr, HYRJE); 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 (altoparlant, OUTPUT);

pinMode (e qetë, INPUT);

// Në fuqinë fillestare, caktoni nga përdoruesi kohën aktuale. Serial.print ("Vendosni kohën aktuale"); vonesa (2000);

Serial.shkruaj (12);

printTimes ();

koha_kur = milis (); // Ruani kohën aktuale}

Hapi 12:

4. Pastaj, në rutinën e lakut, ne mbajmë shënim kohën dhe lexojmë statusin e butonit për të parë nëse përdoruesi është duke vendosur cilindo nga kohët.

lak void () {

// Mbani Kohen

KeepTime ();

// Kontrolloni për të parë nëse është koha për të alarmuar!

nëse ((ora == orë_a && minutë == minuta_a &&! u qetësua) || alarm) {toni (folës, 2000, 500); // Nxjerr një tingull 2000 Hz në altoparlant për 500 ms

vonesë (500); // Vononi 500 ms nëse (! Alarm) {// Nëse alarmi është i fikur, ndizeni

}

}

// Nëse përdoruesi hesht alarmin duke shtypur butonin e qetë, ndaloni alarmin nëse (alarmi &&! I heshtur && digitalRead (i qetë)) {

alarm = i rremë;

heshtur = e vërtetë; }

// Rivendos alarmin nëse (! Alarmi && i heshtur && minutë! = Minuta_a) {i heshtur = i rremë;

}

// Kontrolloni për të parë nëse kunjat e vendosur shkojnë lart, dhe nëse po, shtoni vlerën përkatëseif (digitalRead (set_hr) && orë <12) {

orë ++;

printTimes ();

debounce ();

}

tjetër nëse (digitalRead (set_hr) && orë == 12) {orë = 1;

printTimes ();

debounce ();

}

tjeter {}

nëse (digitalRead (set_min) && minutë <59) {

minutë ++; printTimes ();

debounce ();

}

tjetër nëse (digitalRead (set_min) && minutë == 59) {minutë = 0;

printTimes ();

debounce ();

}

tjetër {} nëse (digitalRead (set_am_pm) && am_pm) {

am_pm = false;

printTimes ();

debounce ();

}

tjetër nëse (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

tjetër {} nëse (digitalRead (set_hr_a) && hour_a <12) {

orë_a ++;

printTimes ();

debounce ();

}

tjetër nëse (digitalRead (set_hr_a) && orë_a == 12) {orë_a = 1;

printTimes ();

debounce ();

}

tjetër {} nëse (digitalRead (set_min_a) && minute_a <59) {

minute_a ++;

printTimes ();

debounce ();

}

tjetër nëse (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

debounce ();

}

tjetër {} nëse (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = false;

printTimes ();

debounce ();

}

tjetër nëse (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = e vërtetë;

printTimes ();

debounce ();

}

tjeter {}

}

Hapi 13:

5. Këtu, do të vini re disa nënrutina që kam krijuar - debounce () dhe printTimes (). Debounce () përdoret për t'u siguruar që ne i lexojmë butonat vetëm një herë. Meqenëse Arduino skanon mijëra herë në sekondë, mund të mendojë se butoni është shtypur disa herë kur keni menduar që ai të lexohet vetëm një herë. Debounce () do të ngrijë programin derisa të lëshohet butoni. printTimes () përditëson ekranin LCD, por meqenëse ishin disa komanda, i kam shtypur një herë dhe pastaj mund ta thërras nën -programin sa herë që ndryshon vlera e kohës.

// Ndërsa ndonjë prej butonave është duke u shtypur, qëndroni në këtë funksion pastaj vononi 250 ms.

void debounce () {

ndërsa (digitalRead (set_hr) || digitalRead (set_min) ||

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

digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} vonesë (250);

}

// Shtyp kohën e azhurnuar nëse ka ndonjë ndryshim

void printTimes () {

Serial.shkruaj (12);

Serial.print ("Koha aktuale:");

Serial.shkruaj (148);

nëse (orë <10) {

Serial.print ("0");

}

Serial.print (orë);

Serial.print (":");

nëse (minuta <10) {

Serial.print ("0");

}

Serial.print (minutë); Serial.print (":");

nëse (e dyta <10) {

Serial.print ("0");

}

Serial.print (e dyta);

nëse (am_pm) {

Serial.print ("PM");

}

tjeter {

Serial.print ("AM");

}

Serial.shkruaj (168);

Serial.print ("Alarm i vendosur për:");

Serial.shkruaj (188);

nëse (orë_a <10) {

Serial.print ("0");

}

Serial.print (orë_a);

Serial.print (":");

nëse (minutë_a <10) {

Serial.print ("0");

}

Serial.print (minute_a);

nëse (am_pm_a) {

Serial.print ("PM");

}

tjeter {

Serial.print ("AM");

}

}

// Rritja e parametrave të kohës të pavlefshme

keepTime () {

etime = millis () - kohë_kurre;

nëse (etime> = 1000 && e dyta <59) {

e dyta ++;

koha_kur = milis ();

printTimes ();

}

tjetër nëse (etime> = 1000 && e dyta == 59 && minuta <59) {e dyta = 0;

minutë ++;

koha_kur = milis ();

printTimes ();

}

përndryshe nëse (etime> = 1000 && e dyta == 59 && minuta == 59 && orë <12) {

e dyta = 0; minutë =

0; orë ++; koha e kurimit =

millis (); printTimes ();

}

përndryshe nëse (etime> = 1000 && e dyta == 59 && minuta == 59 && orë == 12) {

e dyta = 0; minutë =

0; orë = 1; am_pm =

! am_pm;

koha_kur = milis ();

printTimes ();

}

tjeter {}

}

Hapi 14:

6. Kjo është ajo!

Përpiloni dhe ngarkoni dhe ju jeni gati!

Recommended: