Satura rādītājs:

Viena tapa 4 × 4 tastatūra: 10 soļi
Viena tapa 4 × 4 tastatūra: 10 soļi

Video: Viena tapa 4 × 4 tastatūra: 10 soļi

Video: Viena tapa 4 × 4 tastatūra: 10 soļi
Video: ДТП - кто виноват?) #АзбукАСпорта #волейбол #дети #ярцево 2024, Novembris
Anonim
Viena tapa 4 × 4 tastatūra
Viena tapa 4 × 4 tastatūra

Katru reizi, kad es redzu tastatūru, tai ir pievienotas daudzas tapas, tas ir liels jūsu Arduino tapu izšķiešana, tāpēc vai mēs varam palaist tastatūru ar vienu un tikai vienu tapu?. Atbilde ir šeit.

1. darbība: materiālu saraksts

Materiālu rēķins
Materiālu rēķins

Aparatūra:

01 Arduino UNO

02 Maizes dēļi

01 LCD ar I2C

16 Spiedpogas

04 rezistori 1,5 kΩ

04 rezistori 620 Ω

04 rezistori 220 Ω

08 rezistori 100 Ω

01 rezistors 1 kΩ

07 Jumper vadi

Programmatūra:

Arduino IDE ir instalēts jūsu datorā

2. darbība. Shēma un Cicruit

Shēma un Cicruit
Shēma un Cicruit
Shēma un Cicruit
Shēma un Cicruit

Visa ideja ir tāda, ka mums ir 4*4 spiedpogu matrica, kas vertikāli savienota ar zemi ar labo vadu un horizontāli ar otru vadu (pogas vads) un 1,5 kΩ, 620Ω, 220Ω un 100Ω rezistori. 4 rindas ir savienotas ar četriem 100Ω rezistoriem, kā parādīts shematiski.

Katru reizi, nospiežot pogu, jūs aizverat ķēdi, un strāva iet caur citu ceļu un atšķirīgu rezistoru ķēdi, tāpēc pin A0 katrai spiedpogai saņem atšķirīgu analogo rādījumu. Viss, kas jums tagad nepieciešams, ir kodēšana.

3. darbība: kods

#iekļaut

#iekļaut

LiquidCrystal_I2C LCD (0x3f, 20, 4);

int Poga = A0;

int readvalue;

anulēts iestatījums ()

{

Sērijas sākums (9600);

lcd.begin ();

pinMode (poga, INPUT);

lcd.fona apgaismojums ();

lcd.print ("Sveika pasaule");

kavēšanās (2000);

lcd.clear ();

lcd.print ("Viena tapa 4*4 tastatūra");

kavēšanās (2000); }

tukša cilpa ()

{

readvalue = analogRead (Poga);

Serial.println (lasīšanas vērtība);

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. solis: vērtību korekcija

Vērtību korekcija
Vērtību korekcija

Atverot sērijas monitoru, tas parādīs vērtību 1023, nospiežot pogu, tiks parādīts cits rādījums, un šīs vērtības ir jāņem un jāveic dažas izmaiņas kodā

5. solis: projekts pēc kritikas un pārskatīšanas

Projekts pēc kritikas un pārskatīšanas
Projekts pēc kritikas un pārskatīšanas

Nav šaubu, ka mēs visi esam šeit, lai mācītos un dalītos savās zināšanās, pateicoties dažiem komentāriem, ko bija snieguši daži sabiedrības locekļi un kas bija ļoti noderīgi, es nolēmu veikt dažus pielāgojumus un uzlabojumus savā projektā:

Aparatūra:

Es nolēmu lodēt visas PCB sastāvdaļas, lai izvairītos no problēmas ar sliktu savienojumu maizes dēļos.

Kods:

Draugs man ieteica izmantot programmatūras debouncing, un tas ir tikai cikls (piemēram, "cilpai"), lai programmai būtu vajadzīgs zināms laiks, lai to izlasītu, tas nozīmē, ka tā veic daudz lasījumu (manā eksāmenā 500) tikai pēdējais.

par (i = 1; i <= 500; i ++) {// ņem tikai 500. analogo lasījumu

value = analogRead (Button);} // tas palīdz aizņemt kādu laiku un izvairīties no sliktiem rādījumiem

Cits draugs, pateicoties viņam, ieteica man salīdzināt “lasīšanas vērtību” ar vērtību diapazonu, nevis vienu, jo “lasīšanas vērtība” vienai un tai pašai spiedpogai aizņem daudz vērtību. Piemēram, “A” norāda: 849, 850, 851 852, 853, 854, 855, tāpēc tas ir 7 vērtību diapazons: slieksnis (852) un 3 vērtības pa kreisi un pa labi. mums šeit ir jāsalīdzina atšķirības starp “nolasījuma vērtību” un “852” absolūto vērtību ar “3”.

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

6. solis: Pēc dažu pārdošanas darbu

Pēc dažiem pārdošanas darbiem
Pēc dažiem pārdošanas darbiem
Pēc dažiem pārdošanas darbiem
Pēc dažiem pārdošanas darbiem
Pēc dažiem pārdošanas darbiem
Pēc dažiem pārdošanas darbiem

7. solis: Patiesības brīdis

Kā redzat, programma dažreiz sajauc pogas, bet tā joprojām darbojas, teorētiski ķēdei nav nekādu kļūdu, bet kodam ir nepieciešama lielāka kalibrēšana.

8. solis: beigas

Es ceru, ka jums patīk šis projekts un jūs mēģināt to izdarīt, iespējams, jums veiksies labāk nekā man.

Jautājiet man, ja jums ir jautājumi, atstājiet komentārus un, ja jums tas patīk, neaizmirstiet balsot par mani.

Ieteicams: