Բովանդակություն:

Arduino rmարթուցիչ Projectրագիր. 14 քայլ
Arduino rmարթուցիչ Projectրագիր. 14 քայլ

Video: Arduino rmարթուցիչ Projectրագիր. 14 քայլ

Video: Arduino rmարթուցիչ Projectրագիր. 14 քայլ
Video: LDmicro 22: Arduino տախտակներ AVRDUDESS- ով (միկրոկառավարիչների ծրագրավորում LDmicro- ով) 2024, Նոյեմբեր
Anonim
Arduino rmարթուցիչ Projectրագիր
Arduino rmարթուցիչ Projectրագիր

Այս նախագծում մենք կօգտագործենք Arduino Uno- ն ՝ LCD էկրանը կառավարելու համար ՝ ցույց տալու համար ահազանգի դրված ընթացիկ ժամն ու ժամը: Մենք ամեն անգամ սահմանելու համար կօգտագործենք կոճակներ:

Նյութեր:

  • Arduino Uno -
  • Breadboard -
  • Jumper Wires (x13+) -
  • 10 կոմի դիմադրություն (x4) -
  • LCD էկրան -
  • 7 կոճակ-https://vilros.com/collections/raspberry-pi-acces…
  • Պիեզո խոսնակ -

Քայլ 1: Միացման հրահանգներ

Միացման հրահանգներ
Միացման հրահանգներ

1. Arduino- ի 5V պինից մի jumper մետաղալար միացրեք հացահատիկի + ռելսերից մեկին:

Քայլ 2:

Պատկեր
Պատկեր

2. Arduino- ի GND պինից միացնող թել միացրեք երկաթուղու կողքին ձեր ընտրած + տախտակին դրված + երկաթուղու կողքին:

Քայլ 3:

Պատկեր
Պատկեր

3. LCD էկրանը միացրեք հոսանքին, գետնին և TX կապին (կապ 1):

Քայլ 4:

Պատկեր
Պատկեր

4. Տեղադրեք 7 կոճակ հացահատիկի վրա, իսկ ոտքերը ՝ տախտակի բացվածքի միջով:

Քայլ 5:

Պատկեր
Պատկեր

5. Տեղադրեք 10 կոմ դիմադրություն ռելսից `երկաթուղով, որի հետ միացված է GND կապը` կոճակների ներքևի ձախ կապումներին:

Քայլ 6:

Պատկեր
Պատկեր

6. Տեղադրեք ցատկող լարերը կոճակների ներքևի աջ քորոցի և 5 Վ ռելսերի միջև ձեր տախտակի վրա:

Քայլ 7:

Պատկեր
Պատկեր

7. Տեղադրեք jumper լարերը 6 կապում, այնուհետև 8-13, իսկ քորոցը կոճակի վրա, որին միացված է դիմադրությունը:

Քայլ 8:

Պատկեր
Պատկեր

8. Հաջորդը, տեղադրեք ձեր Piezo բարձրախոսը տախտակի վրա և միացրեք 7 -րդ կապը հոսանքի պինին, այնուհետև 100 օմ դիմադրություն գետնին:

Քայլ 9: Programրագրավորման հրահանգներ

1. Համառոտ նկարագիր. Այս նախագիծը օգտագործողից կպահանջի էկրանի սկզբնական միացման ընթացիկ ժամանակը սահմանել ընթացիկ ժամը և այն ժամը, որի համար ահազանգը սահմանված է: Վերևում միացված կոճակները կօգտագործվեն ամեն անգամ կարգավորելու համար: Ձախից աջ `դրանք սահմանվում են ընթացիկ ժամ, ընթացիկ րոպե, ընթացիկ AM կամ PM, զարթուցիչի ժամ, ահազանգի րոպե, AM կամ PM զարթուցիչ: Վերջին կոճակը օգտագործվում է տագնապը հնչեցնելու ժամանակ լռեցնելու համար:

Քայլ 10:

2. Առաջին բանը, որ մենք պետք է անենք, նախնականացնել մեր փոփոխականը, որը մենք պատրաստվում ենք օգտագործել:

// Օգտագործման ենթակա փոփոխականների նախաստորագրում ժամ = 0; // ընթացիկ ժամանակի ժամ int րոպե = 0; //

Րոպե ընթացիկ ժամանակի համար int վայրկյան = 0; // Երկրորդ ՝ ընթացիկ ժամանակի համար

int ժամ_ա = 0; int // alarmարթուցիչի ժամ

րոպե_ա = 0; // alarmարթուցիչի րոպե

bool am_pm = կեղծ; // AM/PM միացնել դրոշը: Սուտը AM է, ճշմարիտը ՝ PM

bool am_pm_a = կեղծ; // AM/PM միացրեք դրոշը ահազանգի համար: Սուտը AM է, ճշմարիտը ՝ PM

int set_hr = 13; // pinամը սահմանելու համար օգտագործեք կապ 13 -ը

int set_min = 12; // Օգտագործեք PIN 12 ՝ րոպեի int սահմանելու համար

set_am_pm = 11; // Առավոտ/երեկո սահմանելու համար օգտագործեք 11 -րդ կապը

int set_hr_a = 10; // pinարթուցիչի ժամ սահմանելու համար օգտագործեք 10 կապը int set_min_a = 9; // pinարթուցիչի րոպե սահմանելու համար օգտագործեք 9 -րդ կապը int set_am_pm_a = 8; // Օգտագործեք 8 -րդ կապը `ահազանգի համար առավոտ/երեկո սահմանելու համար

int խոսնակ = 7; // Ամրապնդել խոսափողի համար հանգիստ = 6; // Ամրացնել ՝ բարձրախոսին կանգնեցնելու համար

bool ահազանգ = կեղծ; // Դրոշ միացնելու/ անջատելու համար `ահազանգ պահելու համար

բոլ լռեց = կեղծ; // Հանգիստ ցուցադրող դրոշը սեղմված չէ

int cur_time = 0; // Փոփոխական ընթացիկ ժամանակի համար

int etime = 0; // Փոփոխական անցած ժամանակի համար

Քայլ 11:

3. Հաջորդը, մենք պետք է կարգավորենք LCD էկրանը և օգտագործողին ասենք, որ սահմանի ընթացիկ ժամանակը: Քանի որ դա պետք է արվի միայն մեկ անգամ, մենք դա կանենք կարգաբերման ռեժիմում:

void setup () {

// Կարգավորել LCD էկրան

Serial.begin (9600); // Սերիալի սկզբնավորում 9600 baud- ում

Սերիա. Գրել (17); // Միացրեք հետևի լույսը

Սերիա. Գրել (24); // Միացրեք էկրանը ՝ կուրսորը առանց թարթելու

Սերիա. Գրել (12); // Մաքրել էկրանը

Սերիա. Գրել (128); // Կուրսորը տեղափոխել վերին ձախ անկյուն // Սահմանել pinModes pinMode (set_hr, Մուտք); 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 (բարձրախոս, OUTPUT);

pinMode (հանգիստ, Մուտք);

// Սկզբնական հզորության դեպքում օգտագործողին տվեք ընթացիկ ժամանակը: Serial.print («Սահմանել ընթացիկ ժամը»); ուշացում (2000);

Սերիա. Գրել (12);

printTimes ();

cur_time = millis (); // Պահել ընթացիկ ժամը}

Քայլ 12:

4. Հետո, օղակի ռեժիմում, մենք հետևում ենք ժամանակին և կարդում ենք կոճակի կարգավիճակը ՝ տեսնելու համար, թե արդյոք օգտվողը կարգավորում է որևէ մեկը:

դատարկ շրջան () {

// Keepամանակ պահեք

KeepTime ();

// Ստուգեք `ահազանգելու ժամանակն է:

եթե ((ժամ == ժամ_ա && րոպե == րոպե_ա &&! լռեց) || ահազանգ) {տոն (խոսնակ, 2000, 500); // Ելք թողեք 2000 Հց ձայն բարձրախոսին 500 ms- ի համար

ուշացում (500); // Հետաձգեք 500 ms եթե (! Ահազանգ) {// Եթե ահազանգն անջատված է, միացրեք այն

}

}

// Եթե օգտվողը լռեցնում է ահազանգը `սեղմելով հանգիստ կոճակը, դադարեցրեք տագնապը, եթե (ահազանգ &&! Հանգիստ && digitalRead (հանգիստ)) {

ահազանգ = կեղծ;

լռեց = ճշմարիտ; }

// Վերագործարկեք ահազանգը, եթե (! Alarm && bêdeng && րոպե! = Minute_a) {bêdengեց = կեղծ;

}

// Ստուգեք ՝ տեսնելու, թե արդյոք տեղադրված քորոցները բարձր են, և եթե այո, ավելացրեք համապատասխան արժեքը, եթե (digitalRead (set_hr) && ժամ <12) {

ժամ ++;

printTimes ();

դեբոնս ();

}

այլապես եթե (digitalRead (set_hr) && ժամ == 12) {ժամ = 1;

printTimes ();

դեբունս ();

}

ուրիշ {}

եթե (digitalRead (set_min) && րոպե <59) {

րոպե ++; printTimes ();

դեբոնս ();

}

այլապես եթե (digitalRead (set_min) && րոպե == 59) {րոպե = 0;

printTimes ();

դեբոնս ();

}

այլ {} եթե (digitalRead (set_am_pm) && am_pm) {

am_pm = կեղծ;

printTimes ();

դեբոնս ();

}

այլապես եթե (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

դեբունս ();

}

այլ {} եթե (digitalRead (set_hr_a) && hour_a <12) {

ժամ_ա ++;

printTimes ();

դեբունս ();

}

այլապես եթե (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

դեբոնս ();

}

այլ {} եթե (digitalRead (set_min_a) && minute_a <59) {

րոպե_ա ++;

printTimes ();

դեբոնս ();

}

այլապես եթե (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

դեբոնս ();

}

այլ {} եթե (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = կեղծ;

printTimes ();

դեբոնս ();

}

այլապես, եթե (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

դեբոնս ();

}

ուրիշ {}

}

Քայլ 13:

5. Այստեղ դուք կնկատեք իմ ստեղծած մի քանի ենթածրագրեր ՝ debounce () և printTimes (): Debounce () - ն օգտագործվում է համոզվելու համար, որ մենք միայն մեկ անգամ ենք կարդում կոճակները: Քանի որ Arduino- ն վայրկյանում հազարավոր անգամներ է սկանավորում, կարող է մտածել, որ կոճակը մի քանի անգամ սեղմվել է, երբ դու միայն մեկ անգամ կարդալու մտադրություն ունեիր: Debounce () ծրագիրը կսառեցնի մինչև կոճակը բացվի: printTimes () թարմացնում է LCD էկրանը, բայց քանի որ դա մի քանի հրաման էր, ես դրանք մեկ անգամ մուտքագրեցի, այնուհետև ցանկացած ժամանակի արժեքի փոփոխության դեպքում կարող եմ զանգահարել ենթածրագրին:

// Մինչև որևէ կոճակ սեղմվում է, մնացեք այս գործառույթում, ապա հետաձգեք 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)) {} ուշացում (250);

}

// Տպում է թարմացված ժամանակները, եթե կան փոփոխություններ

void printTimes () {

Սերիա. Գրել (12);

Serial.print ("Ընթացիկ ժամանակը.");

Սերիա. Գրել (148);

եթե (ժամ <10) {

Serial.print ("0");

}

Serial.print (ժամ);

Serial.print (":");

եթե (րոպե <10) {

Serial.print ("0");

}

Serial.print (րոպե); Serial.print (":");

եթե (երկրորդ <10) {

Serial.print ("0");

}

Serial.print (երկրորդ);

եթե (am_pm) {

Serial.print («PM»);

}

ուրիշ {

Serial.print («AM»);

}

Սերիա. Գրել (168);

Serial.print («rmարթուցիչի համար սահմանված է»);

Սերիա. Գրել (188);

եթե (ժամ_ա <10) {

Serial.print ("0");

}

Serial.print (hour_a);

Serial.print (":");

եթե (րոպե_ա <10) {

Serial.print ("0");

}

Serial.print (րոպե_ա);

եթե (am_pm_a) {

Serial.print («PM»);

}

ուրիշ {

Serial.print («AM»);

}

}

// parametersամանակի պարամետրերի դատարկության բարձրացում

KeepTime () {

etime = millis () - cur_time;

եթե (etime> = 1000 && երկրորդ <59) {

երկրորդ ++;

cur_time = millis ();

printTimes ();

}

այլապես եթե (etime> = 1000 && երկրորդ == 59 && րոպե <59) {երկրորդ = 0;

րոպե ++;

cur_time = millis ();

printTimes ();

}

այլապես, եթե (etime> = 1000 && երկրորդ == 59 && րոպե == 59 && ժամ <12) {

երկրորդ = 0; րոպե =

0; ժամ ++; cur_time =

millis (); printTimes ();

}

այլապես, եթե (etime> = 1000 && երկրորդ == 59 && րոպե == 59 && ժամ == 12) {

երկրորդ = 0; րոպե =

0; ժամ = 1; am_pm =

! am_pm;

cur_time = millis ();

printTimes ();

}

ուրիշ {}

}

Քայլ 14:

6. Դա այն է!

Կազմեք և վերբեռնեք, և ամեն ինչ ավարտված է:

Խորհուրդ ենք տալիս: