Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Kiekvieną kartą, kai matau klaviatūrą, yra daug kaiščių, tai yra didelė jūsų „Arduino“kaiščių švaistymas, todėl ar galime paleisti klaviatūrą su vienu ir tik vienu kaiščiu?. Atsakymas čia.
1 žingsnis: medžiagų sąrašas
Techninė įranga:
01 „Arduino UNO“
02 Duonos lentos
01 LCD su I2C
16 Mygtukai
04 rezistoriai 1,5 kΩ
04 rezistoriai 620 Ω
04 rezistoriai 220 Ω
08 rezistoriai 100 Ω
01 rezistorius 1 kΩ
07 Jumperiniai laidai
Programinė įranga:
„Arduino IDE“įdiegtas jūsų kompiuteryje
2 žingsnis: Schema ir „Cicruit“
Visa idėja yra ta, kad mes turime 4*4 matricą mygtukų, prijungtų vertikaliai prie žemės tinkamu laidu, o horizontaliai - kitu laidu (mygtuko laidas) ir 1,5 kΩ, 620Ω, 220Ω ir 100Ω rezistorius. 4 eilutės yra sujungtos keturiais 100Ω rezistoriais, kaip parodyta schemoje.
Kiekvieną kartą, kai paspaudžiate mygtuką, uždarote grandinę, o srovė eina skirtingu keliu ir skirtinga rezistorių grandine, todėl A0 kaištis gauna skirtingą analoginį nuskaitymą kiekvienam mygtuko paspaudimui. Viskas, ko jums dabar reikia, yra kodavimas.
3 žingsnis: Kodas
#įtraukti
#įtraukti
LiquidCrystal_I2C LCD (0x3f, 20, 4);
int mygtukas = A0;
int readvalue;
negaliojanti sąranka ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (mygtukas, Įvestis);
lcd.backlight ();
lcd.print („Labas pasaulis“);
vėlavimas (2000 m.);
lcd.clear ();
lcd.print ("Vieno kaiščio 4*4 klaviatūra");
vėlavimas (2000 m.); }
tuštumos kilpa ()
{
readvalue = analogRead (mygtukas);
Serial.println (skaitymo vertė);
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 žingsnis: vertybių korekcija
Kai atidarysite nuoseklųjį matuoklį, jis parodys 1023 vertę, jei paspausite mygtuką, jums bus dar kartą nuskaityta, turite paimti šias vertes ir atlikti tam tikrus kodo pakeitimus
5 žingsnis: projektas po kritikos ir peržiūros
Nėra jokių abejonių, kad visi esame čia, norėdami pasimokyti ir pasidalyti savo žiniomis, dėka kai kurių bendruomenės žmonių komentarų, kurie buvo labai naudingi, nusprendžiau šiek tiek pakoreguoti ir patobulinti savo projektą:
Techninė įranga:
Aš nusprendžiau lituoti visus PCB komponentus, kad išvengčiau blogo ryšio su maitinimo plokštėmis problemos.
Kodas:
Draugas man patarė naudoti programinės įrangos išjungimą ir tai tik ciklas (pvz., „Už“ciklą), kad programa užtruktų, kol išsirinks skaitymą, reiškia, kad ji daug skaito (500 mano egzamine) tik paskutinis.
(i = 1; i <= 500; i ++) {// imk tik 500 -ąjį analoginį skaitymą
value = analogRead (Button);} // tai padeda šiek tiek užtrukti ir išvengti blogų rodmenų
Kitas draugas jo dėka patarė man palyginti „readvalue“su daugybe reikšmių, o ne viena, nes „readvalue“užima daug reikšmių tam pačiam mygtukui. Pavyzdžiui, „A“rodo: 849, 850, 851 852, 853, 854, 855, taigi tai yra 7 reikšmių diapazonas: slenkstis (852) ir 3 vertės kairėje ir dešinėje. čia turime palyginti absoliučią skirtumo tarp „skaitymo vertės“ir „852“vertę su „3“.
if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
6 žingsnis: Po tam tikrų pardavimo darbų
7 žingsnis: Tiesos akimirka
Kaip matote, programa kartais painioja mygtukus, tačiau ji vis tiek veikia, teoriškai grandinėje nėra nieko blogo, tačiau kodą reikia daugiau kalibruoti.
8 žingsnis: pabaiga
Tikiuosi, kad jums patinka šis projektas ir bandysite tai padaryti, galbūt jums seksis geriau nei man.
Paklauskite manęs, jei turite klausimų, palikite komentarus ir nepamirškite balsuoti už mane, jei jums tai patinka.