Turinys:

Vieno kaiščio 4 × 4 klaviatūra: 10 žingsnių
Vieno kaiščio 4 × 4 klaviatūra: 10 žingsnių

Video: Vieno kaiščio 4 × 4 klaviatūra: 10 žingsnių

Video: Vieno kaiščio 4 × 4 klaviatūra: 10 žingsnių
Video: Абсолютное величие - распаковка Magic Keyboard для iPad Pro. Что вы делаете, Apple? 2024, Lapkritis
Anonim
Vieno kaiščio 4 × 4 klaviatūra
Vieno kaiščio 4 × 4 klaviatūra

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

Sąmata
Sąmata

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“

Schema ir Cicruit
Schema ir Cicruit
Schema ir Cicruit
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

Vertybių korekcija
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

Projektas po kritikos ir peržiūros
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ų

Po tam tikrų pardavimo darbų
Po tam tikrų pardavimo darbų
Po tam tikrų pardavimo darbų
Po tam tikrų pardavimo darbų
Po tam tikrų pardavimo darbų
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.

Rekomenduojamas: