Satura rādītājs:
- 1. darbība: materiālu saraksts
- 2. darbība. Shēma un Cicruit
- 3. darbība: kods
- 4. solis: vērtību korekcija
- 5. solis: projekts pēc kritikas un pārskatīšanas
- 6. solis: Pēc dažu pārdošanas darbu
- 7. solis: Patiesības brīdis
- 8. solis: beigas
Video: Viena tapa 4 × 4 tastatūra: 10 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
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
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
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
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
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
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:
ICSP savienotājs Arduino Nano bez lodēta tapa galvenes, bet Pogo tapa: 7 soļi
ICSP savienotājs Arduino Nano bez lodējamas tapas galvenes, bet Pogo tapa: izveidojiet ICSP savienotāju Arduino Nano bez lodētas tapas galvenes uz tāfeles, bet Pogo tapu. Daļas 3 × 2 kontaktu ligzda x1 - APitch 2,54 mm divu līniju stieples sietiņu savienotāja korpusa spailes x6 -BP75-E2 (1,3 mm koniska galva) atsperes testa zondes Pogo tapa
Ieslēgts un izslēgts slēdzis ar UC. Viena spiedpoga. Viena tapa. Diskrēta sastāvdaļa: 5 soļi
Ieslēgts un izslēgts slēdzis ar UC. Viena spiedpoga. Viena tapa. Diskrēts komponents: Sveiki, visi meklēja ieslēgšanas/izslēgšanas ķēdi tīklā. Viss, ko atradu, nebija tas, ko meklēju. Es runāju ar sevi, tam noteikti ir ceļš. Tas bija tas, kas man bija vajadzīgs.-Tikai viena spiedpoga, lai to ieslēgtu un izslēgtu
Arduino AREF tapa: 6 soļi
Arduino AREF tapa: Šajā apmācībā mēs apskatīsim, kā jūs varat izmērīt mazākus spriegumus ar lielāku precizitāti, izmantojot analogās ieejas tapas savā Arduino vai saderīgā plāksnē kopā ar AREF tapu. Tomēr vispirms mēs veiksim nelielu pārskatīšanu, lai jūs paātrinātu
Gaismas animācijas brīvdienu tapa: 9 soļi (ar attēliem)
Gaismas animācijas brīvdienu tapa: Kad es pirmo reizi izstrādāju šo projektu, es negaidīju, ka to publicēšu kā atvērtu avotu. Es domāju, ka tā bija lieliska ideja, un tai bija komerciāls potenciāls, ko es varētu pārdot amatniecības izstādē. Tas, iespējams, ir saistīts ar zināmu pieredzes trūkumu vai varbūt
Vairāk nekā 100 slēdžu vienā Arduino tapā: 6 soļi (ar attēliem)
100+ slēdži vienā Arduino tapā: Ievads Vai jums beidzās ievades tapas? Neuztraucieties, šeit ir risinājums bez maiņu reģistriem. Šajā videoklipā mēs uzzināsim par vairāk nekā 100 slēdžu pievienošanu vienam Arduino tapam