Përmbajtje:

Një tastierë 4 pin 4: 4: 10 hapa
Një tastierë 4 pin 4: 4: 10 hapa

Video: Një tastierë 4 pin 4: 4: 10 hapa

Video: Një tastierë 4 pin 4: 4: 10 hapa
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Nëntor
Anonim
Një tastierë 4 pin 4
Një tastierë 4 pin 4

Sa herë që shoh një tastierë, ajo vjen me shumë kunja, është një humbje e madhe e kunjave tuaj Arduino, kështu që a mund të drejtojmë një tastierë me një dhe vetëm një kunj?. Përgjigja është këtu.

Hapi 1: Fatura e Materialeve

Fatura e Materialeve
Fatura e Materialeve

Hardware:

01 Arduino UNO

02 Tabelat e bukës

01 LCD me I2C

16 Shtypni butonat

04 rezistente 1.5 kΩ

04 rezistente 620 Ω

04 rezistente 220 Ω

08 rezistente 100 Ω

01 rezistencë 1 kΩ

07 Tela bluzë

Softuer:

Arduino IDE i instaluar në kompjuterin tuaj

Hapi 2: Skematike dhe Cicruit

Skematike dhe Cicruit
Skematike dhe Cicruit
Skematike dhe Cicruit
Skematike dhe Cicruit

E gjithë ideja është se ne kemi matricën 4*4 të butonave të shtypur të lidhur vertikalisht në Tokë nga plumbi i djathtë dhe horizontalisht nga plumbi tjetër (plumbi i butonit) dhe rezistorë prej 1.5 kΩ, 620Ω, 220Ω dhe 100Ω, skajet e 4 rreshtat janë të lidhur me katër rezistorë 100Ω siç tregohet në skemë.

Sa herë që shtypni një buton mbyllni qarkun dhe rryma kalon përmes një rruge të ndryshme dhe zinxhir të ndryshëm të rezistorëve, kjo është arsyeja pse pin A0 merr një lexim analog të ndryshëm për çdo buton. E tëra çfarë ju nevojitet tani është kodimi.

Hapi 3: Kodi

#përfshi

#përfshi

LiquidCrystal_I2C LCD (0x3f, 20, 4);

int Button = A0;

int readvalue;

void setup ()

{

Serial.filloj (9600);

lcd.filloj ();

pinMode (Butoni, HYRJA);

lcd. backlight ();

lcd.print ("Përshëndetje Botë");

vonesa (2000);

lcd.qartë ();

lcd.print ("Një pin 4*4 tastiera");

vonesa (2000); }

lak void ()

{

vlera e leximit = analogRead (Button);

Serial.println (vlera e lexuar);

nëse (vlera e leximit == 852) {lcd.qartë (); lcd.print ("A");}

tjetër {if (vlera e leximit == 763) {lcd.clear (); lcd.print ("B");}

tjetër {if (vlera e leximit == 685) {lcd.clear (); lcd.print ("C");}

tjetër {if (vlera e leximit == 965) {lcd.clear (); lcd.print ("D");}

tjetër {if (vlera e leximit == 565) {lcd.clear (); lcd.print ("9");}

tjetër {if (vlera e leximit == 614) {lcd.clear (); lcd.print ("6");}

tjetër {if (vlera e leximit == 360) {lcd.clear (); lcd.print ("3");}

tjetër {if (vlera e leximit == 335) {lcd.clear (); lcd.print ("#");}

tjetër {if (vlera e leximit == 396) {lcd.clear (); lcd.print ("8");}

tjetër {if (vlera e leximit == 349) {lcd.clear (); lcd.print ("5");}

tjetër {if (vlera e leximit == 235) {lcd.clear (); lcd.print ("2");}

tjetër {if (vlera e leximit == 279) {lcd.clear (); lcd.print ("0");}

tjetër {if (vlera e leximit == 452) {lcd.clear (); lcd.print ("7");}

tjetër {if (vlera e leximit == 271) {lcd.clear (); lcd.print ("4");}

tjetër {if (vlera e leximit == 170) {lcd.clear (); lcd.print ("1");}

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

Hapi 4: Korrigjimi i Vlerave

Korrigjimi i Vlerave
Korrigjimi i Vlerave

Kur hapni monitorin serik do të tregojë një vlerë prej 1023, nëse shtypni një buton do t'ju japë një lexim tjetër ju duhet t'i merrni ato vlera dhe të bëni disa ndryshime në kod.

Hapi 5: Projekti Pas Kritikës dhe Rishikimit

Projekti Pas Kritikës dhe Rishikimit
Projekti Pas Kritikës dhe Rishikimit

Nuk ka dyshim se ne të gjithë jemi këtu për të mësuar dhe ndarë njohuritë tona, falë disa komenteve të lënë nga disa njerëz nga komuniteti që ishin shumë të dobishëm, vendosa të bëj disa rregullime dhe përmirësime në projektin tim:

Pajisja:

Vendosa të bashkoj të gjithë përbërësit në një PCB për të shmangur problemin e lidhjes së keqe në panelet e bukës.

Kodi:

Një mik më këshilloi të përdor një program debouncing dhe është vetëm një lak (lak "për" për shembull) për ta bërë programin të marrë pak kohë për të zgjedhur një lexim do të thotë që ai lexon shumë (500 në provimin tim) por merr vetem e fundit

për (i = 1; i <= 500; i ++) {// merrni vetëm leximin analog të 500 -të

vlera = analogRead (Butoni);} // kjo është ndihmë për të marrë pak kohë për të shmangur leximet e këqija

Një mik tjetër falë tij më këshilloi të krahasoja "vlerën e lexuar" me një sërë vlerash jo një, sepse "vlera e lexuar" merr shumë vlera për të njëjtin buton. "A" për shembull jep një lexim të: 849, 850, 851 852, 853, 854, 855 pra është një diapazon prej 7 vlerash: një prag (852) dhe 3 vlera majtas dhe djathtas. ajo që duhet të bëjmë këtu është të krahasojmë vlerën absolute të diferencës midis "vlerës së lexuar" dhe "852" me "3".

nëse (abs (vlera e leximit-852) <= 8) {lcd.qartë (); lcd.print ("A");}

Hapi 6: Pas disa punimeve të saldimit

Pas disa punimeve të saldimit
Pas disa punimeve të saldimit
Pas disa punimeve të saldimit
Pas disa punimeve të saldimit
Pas disa punimeve të saldimit
Pas disa punimeve të saldimit

Hapi 7: Momenti i së Vërtetës

Siç mund ta shihni, programi ndonjëherë ngatërron butonat, por ai ende punon, në teori nuk ka asgjë të keqe me qarkun, por kodi ka nevojë për më shumë kalibrim.

Hapi 8: Fundi

Shpresoj se ju pëlqen ky projekt dhe përpiqeni ta bëni atë, mbase do të bëni më mirë se unë.

Më pyesni nëse keni pyetje, lini komente dhe mos harroni të votoni për mua nëse ju pëlqen kjo.

Recommended: