Obsah:

Klávesnice s jedním pinem 4 × 4: 10 kroků
Klávesnice s jedním pinem 4 × 4: 10 kroků

Video: Klávesnice s jedním pinem 4 × 4: 10 kroků

Video: Klávesnice s jedním pinem 4 × 4: 10 kroků
Video: Tento Tvar Je NEMOŽNÝ Nakreslit!😱 2024, Prosinec
Anonim
Klávesnice s jedním pinem 4 × 4
Klávesnice s jedním pinem 4 × 4

Pokaždé, když vidím klávesnici, přichází se spoustou pinů, je to velká ztráta vašich pinů Arduino, můžeme tedy spustit klávesnici s jediným a jediným pinem? Odpověď je zde.

Krok 1: Kusovník

Kusovník
Kusovník

Hardware:

01 Arduino UNO

02 prkénka

01 LCD s I2C

16 Tlačítka

04 odpory 1,5 kΩ

04 odpory 620 Ω

04 odpory 220 Ω

08 odpory 100 Ω

01 odpor 1 kΩ

07 Propojovací vodiče

Software:

Arduino IDE nainstalované ve vašem PC

Krok 2: Schéma a Cicruit

Schéma a Cicruit
Schéma a Cicruit
Schéma a Cicruit
Schéma a Cicruit

Celá myšlenka je, že máme matici 4*4 tlačítek připojenou svisle k zemi pravým vodičem a horizontálně druhým vodičem (vodičem tlačítka) a odpory 1,5 kΩ, 620Ω, 220Ω a 100Ω, konce 4 řady jsou spojeny čtyřmi odpory 100Ω, jak ukazuje schéma.

Pokaždé, když stisknete tlačítko, zavřete obvod a proud prochází jinou cestou a jiným řetězcem odporů, proto pin A0 dostává pro každé tlačítko jiné analogové čtení. Vše, co nyní potřebujete, je kódování.

Krok 3: Kód

#zahrnout

#zahrnout

LiquidCrystal_I2C lcd (0x3f, 20, 4);

int Tlačítko = A0;

int hodnota čtení;

neplatné nastavení ()

{

Serial.begin (9600);

lcd.begin ();

pinMode (tlačítko, VSTUP);

lcd.backlight ();

lcd.print („Hello World“);

zpoždění (2000);

lcd.clear ();

lcd.print („klávesnice s jedním pinem 4*4“);

zpoždění (2000); }

prázdná smyčka ()

{

readvalue = analogRead (Tlačítko);

Serial.println (hodnota čtení);

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 {}}}}}}}}}}}}}}}}}}

Krok 4: Oprava hodnot

Oprava hodnot
Oprava hodnot

Když otevřete sériový monitor, zobrazí hodnotu 1023, pokud stisknete tlačítko, poskytne vám další čtení, musíte tyto hodnoty vzít a provést nějaké změny v kódu

Krok 5: Projekt po kritice a revizi

Projekt po kritice a revizi
Projekt po kritice a revizi

Není pochyb o tom, že jsme všichni tady, abychom se učili a sdíleli své znalosti, díky několika komentářům, které zanechali někteří lidé z komunity a které byly velmi užitečné, jsem se rozhodl provést na svém projektu několik úprav a vylepšení:

Hardware:

Rozhodl jsem se pájet všechny součásti na desce plošných spojů, abych se vyhnul problému se špatným spojením v prkénkách.

Kód:

Přítel mi poradil, abych použil softwarové odskakování, a je to jen smyčka (například smyčka „pro“), aby programu nějaký čas trvalo, než si vybral čtení, což znamená, že udělá hodně přečtení (500 v mé zkoušce), ale zabere jen ten poslední.

for (i = 1; i <= 500; i ++) {// vezměte pouze 500. analogový vlákno

value = analogRead (Button);} // to pomůže zabrat nějaký čas a vyhnout se špatným hodnotám

Další jeho přítel mi doporučil porovnat „hodnotu čtení“s řadou hodnot, nikoli s jednou, protože „hodnota pro čtení“pro stejné tlačítko vyžaduje mnoho hodnot. Například „A“udává hodnotu: 849, 850, 851 852, 853, 854, 855, takže je to rozsah 7 hodnot: práh (852) a 3 hodnoty vlevo a vpravo. musíme zde porovnat absolutní hodnotu rozdílu mezi „hodnotou čtení“a „852“na hodnotu „3“.

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

Krok 6: Po nějaké pájecí práci

Po nějaké pájecí práci
Po nějaké pájecí práci
Po nějaké pájecí práci
Po nějaké pájecí práci
Po nějaké pájecí práci
Po nějaké pájecí práci

Krok 7: Okamžik pravdy

Jak vidíte, program někdy zaměňuje tlačítka, ale stále funguje, teoreticky na obvodu není nic špatného, ale kód vyžaduje další kalibraci.

Krok 8: Konec

Doufám, že se vám tento projekt líbí a pokusíte se ho udělat, možná se vám bude dařit lépe než mně.

Zeptejte se mě, pokud máte dotazy, zanechte komentáře a nezapomeňte pro mě hlasovat, pokud se vám to líbí.

Doporučuje: