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

One Pin 4 × 4 ստեղնաշար `10 քայլ
One Pin 4 × 4 ստեղնաշար `10 քայլ

Video: One Pin 4 × 4 ստեղնաշար `10 քայլ

Video: One Pin 4 × 4 ստեղնաշար `10 քայլ
Video: Set Paging File Size in Windows 2024, Նոյեմբեր
Anonim
Մեկ կապ 4 × 4 ստեղնաշար
Մեկ կապ 4 × 4 ստեղնաշար

Ամեն անգամ, երբ տեսնում եմ ստեղնաշար, այն գալիս է բազմաթիվ կապումներով, դա ձեր Arduino- ի կապումերի մեծ վատնում է, ուստի կարո՞ղ ենք մեկ և միայն մեկ կապով ստեղնաշար գործարկել:. Պատասխանն այստեղ է:

Քայլ 1: Նյութերի հաշիվ

Ապրանքների հաշիվը
Ապրանքների հաշիվը

Սարքավորումներ:

01 Arduino UNO

02 Գրատախտակներ

01 LCD I2C- ով

16 Սեղմեք կոճակները

04 ռեզիստոր 1.5 կՕմ

04 դիմադրիչներ 620 Ω

04 դիմադրություն 220 Ω

08 դիմադրություն 100 Ω

01 դիմադրություն 1 kΩ

07 Jumper լարեր

Softwareրագրային ապահովում:

Arduino IDE- ն տեղադրված է ձեր համակարգչում

Քայլ 2. Սխեմատիկ և կիկրուտ

Սխեմատիկ և կիկրուտ
Սխեմատիկ և կիկրուտ
Սխեմատիկ և կիկրուտ
Սխեմատիկ և կիկրուտ

Ամբողջ գաղափարն այն է, որ մենք ունենք սեղմման կոճակների 4*4 մատրիցա, որոնք ուղղահայաց միացված են գետնին աջ կապիչով, իսկ հորիզոնական ՝ մյուս կապիչով (կոճակի կապիչ) և 1.5 կՄ, 620Ω, 220Ω, և 100Ω դիմադրիչներ, ծայրերը 4 տողերը միացված են չորս 100Ω դիմադրիչներով, ինչպես ցույց է տրված սխեմատիկ:

Ամեն անգամ, երբ սեղմում ես կոճակը, դու փակում ես միացումը, և հոսանքը անցնում է այլ ճանապարհով և ռեզիստորների տարբեր շղթայով, այդ իսկ պատճառով կապի A0- ն ստանում է այլ անալոգային ընթերցում յուրաքանչյուր սեղմման կոճակի համար: Այն, ինչ ձեզ հիմա անհրաժեշտ է, կոդավորում է:

Քայլ 3: Կոդ

#ներառում

#ներառում

LiquidCrystal_I2C LCD (0x3f, 20, 4);

int Կոճակ = A0;

int ընթերցման արժեք;

դատարկ կարգավորում ()

{

Serial.begin (9600);

lcd. սկսել ();

pinMode (Կոճակ, Մուտք);

lcd. լուսարձակը ();

lcd.print («Բարև աշխարհ»);

ուշացում (2000);

lcd. հստակ ();

lcd.print («Մեկ կապում 4*4 ստեղնաշար»);

ուշացում (2000); }

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

{

readvalue = analogRead (կոճակ);

Serial.println (ընթերցման արժեք);

if (readvalue == 852) {lcd.clear (); lcd.print ("A");}

else {if (readvalue == 763) {lcd.clear (); lcd.print ("B");}

else {if (readvalue == 685) {lcd.clear (); lcd.print ("C");}

else {if (readvalue == 965) {lcd.clear (); lcd.print ("D");}

else {if (readvalue == 565) {lcd.clear (); lcd.print ("9");}

else {if (readvalue == 614) {lcd.clear (); lcd.print ("6");}

else {if (readvalue == 360) {lcd.clear (); lcd.print ("3");}

else {if (readvalue == 335) {lcd.clear (); lcd.print ("#");}

else {if (readvalue == 396) {lcd.clear (); lcd.print ("8");}

else {if (readvalue == 349) {lcd.clear (); lcd.print ("5");}

else {if (readvalue == 235) {lcd.clear (); lcd.print ("2");}

else {if (readvalue == 279) {lcd.clear (); lcd.print ("0");}

else {if (readvalue == 452) {lcd.clear (); lcd.print ("7");}

else {if (readvalue == 271) {lcd.clear (); lcd.print ("4");}

else {if (readvalue == 170) {lcd.clear (); lcd.print ("1");}

else {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} else {}}}}}}}}}}}}}}}}}

Քայլ 4. Արժեքների ուղղում

Արժեքների ուղղում
Արժեքների ուղղում

Սերիական մոնիտորը բացելիս այն ցույց կտա 1023 արժեք, եթե մեկ կոճակ սեղմելով այն կտա ձեզ մեկ այլ ընթերցում, դուք պետք է ընդունեք այդ արժեքները և որոշ փոփոխություններ կատարեք ծածկագրում:

Քայլ 5. Քննադատությունից և վերանայումից հետո նախագիծ

Քննադատությունից և վերանայումից հետո նախագիծ
Քննադատությունից և վերանայումից հետո նախագիծ

Կասկած չկա, որ մենք բոլորս այստեղ ենք սովորելու և կիսելու մեր գիտելիքները: Համայնքի որոշ մարդկանց թողած մեկնաբանությունների շնորհիվ, որոնք շատ օգտակար էին, ես որոշեցի որոշ փոփոխություններ և բարելավումներ մտցնել իմ նախագծում.

Սարքավորումներ

Ես որոշեցի PCB- ում զոդել բոլոր բաղադրիչները, որպեսզի խուսափեմ տախտակներում վատ միացման խնդրից:

Կոդը:

Ընկերուհին ինձ խորհուրդ տվեց օգտագործել ծրագրակազմի ապամոնտաժումը, և դա պարզապես մի հանգույց է (օրինակ ՝ «օղակ» -ի համար), որպեսզի ծրագիրը որոշ ժամանակ տևի ընթերցանություն ընտրելու համար, նշանակում է, որ այն շատ ընթերցումներ է կատարում (իմ քննության մեջ 500), բայց տևում է միայն վերջինը:

for (i = 1; i <= 500; i ++) {// վերցրեք միայն 500 -րդ անալոգային ընթերցումը

value = analogRead (կոճակ);} // դա օգնում է որոշ ժամանակ պահանջել ՝ վատ ընթերցումներից խուսափելու համար

Նրա շնորհիվ մեկ այլ ընկեր խորհուրդ տվեց համեմատել «ընթերցման արժեքը» մի շարք արժեքների հետ, ոչ թե մեկ, քանի որ «ընթերցման արժեքը» միևնույն կոճակի համար շատ արժեքներ է պահանջում: Օրինակ ՝ «Ա» -ն ընթերցում է ՝ 849, 850, 851 852, 853, 854, 855, այնպես որ դա 7 արժեքների միջակայք է. Շեմ (852) և 3 արժեք ՝ ձախ և աջ: այն, ինչ մենք պետք է անենք այստեղ, համեմատել «ընթերցման արժեքի» և «852» -ի տարբերության բացարձակ արժեքը «3» -ի հետ:

if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}

Քայլ 6: Sոդման որոշ աշխատանքներից հետո

Someոդման որոշ աշխատանքներից հետո
Someոդման որոշ աշխատանքներից հետո
Someոդման որոշ աշխատանքներից հետո
Someոդման որոշ աշխատանքներից հետո
Someոդման որոշ աշխատանքներից հետո
Someոդման որոշ աշխատանքներից հետո

Քայլ 7: ofշմարտության պահը

Ինչպես տեսնում եք, ծրագիրը երբեմն շփոթում է կոճակները, բայց այն դեռ աշխատում է, տեսականորեն սխեմայի մեջ ոչ մի վատ բան չկա, բայց կոդն ավելի շատ ճշգրտման կարիք ունի:

Քայլ 8: Վերջ

Հուսով եմ, որ ձեզ դուր կգա այս նախագիծը և կփորձեք դա անել, գուցե դուք ավելի լավ կանեք, քան ես:

Հարցրեք ինձ, եթե ունեք հարցեր, թողեք մեկնաբանություններ և չմոռանաք քվեարկել իմ օգտին, եթե դա ձեզ դուր է գալիս:

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