Indholdsfortegnelse:
- Trin 1: Stykliste
- Trin 2: Skematisk og Cicruit
- Trin 3: Koden
- Trin 4: Korrektion af værdier
- Trin 5: Projekt efter kritik og anmeldelse
- Trin 6: Efter noget solgt arbejde
- Trin 7: Sandhedens øjeblik
- Trin 8: Slutningen
Video: One Pin 4 × 4 tastatur: 10 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Hver gang jeg ser et tastatur, kommer det med mange pins, det er et stort spild af dine Arduino -pins, så kan vi køre et tastatur med en og kun en pin?. Svaret er her.
Trin 1: Stykliste
Hardware:
01 Arduino UNO
02 Brødbrætter
01 LCD med I2C
16 trykknapper
04 modstande 1,5 kΩ
04 modstande 620 Ω
04 modstande 220 Ω
08 modstande 100 Ω
01 modstand 1 kΩ
07 Jumperwires
Software:
Arduino IDE installeret på din pc
Trin 2: Skematisk og Cicruit
Hele tanken er, at vi har 4*4 matrix af trykknapper forbundet lodret til jorden med den højre ledning og vandret med den anden ledning (knapledningen) og modstande på 1,5 kΩ, 620Ω, 220Ω og 100Ω, enderne på de 4 rækker er forbundet med fire 100Ω modstande som vist skematisk.
Hver gang du trykker på en knap, lukker du kredsløbet, og strømmen går gennem en anden vej og forskellige modstandskæder, hvorfor pin A0 modtager en anden analog aflæsning for hver trykknap. Alt hvad du har brug for nu er kodning.
Trin 3: Koden
#omfatte
#omfatte
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int -knap = A0;
int læseværdi;
ugyldig opsætning ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (knap, INPUT);
lcd.backlight ();
lcd.print ("Hej verden");
forsinkelse (2000);
lcd.clear ();
lcd.print ("En pin 4*4 tastatur");
forsinkelse (2000); }
hulrum ()
{
readvalue = analogRead (knap);
Serial.println (læseværdi);
hvis (readvalue == 852) {lcd.clear (); lcd.print ("A");}
ellers {if (readvalue == 763) {lcd.clear (); lcd.print ("B");}
ellers {if (readvalue == 685) {lcd.clear (); lcd.print ("C");}
ellers {if (readvalue == 965) {lcd.clear (); lcd.print ("D");}
ellers {if (readvalue == 565) {lcd.clear (); lcd.print ("9");}
ellers {if (readvalue == 614) {lcd.clear (); lcd.print ("6");}
ellers {if (readvalue == 360) {lcd.clear (); lcd.print ("3");}
ellers {if (readvalue == 335) {lcd.clear (); lcd.print ("#");}
ellers {if (readvalue == 396) {lcd.clear (); lcd.print ("8");}
ellers {if (readvalue == 349) {lcd.clear (); lcd.print ("5");}
ellers {if (readvalue == 235) {lcd.clear (); lcd.print ("2");}
ellers {if (readvalue == 279) {lcd.clear (); lcd.print ("0");}
ellers {if (readvalue == 452) {lcd.clear (); lcd.print ("7");}
ellers {if (readvalue == 271) {lcd.clear (); lcd.print ("4");}
ellers {if (readvalue == 170) {lcd.clear (); lcd.print ("1");}
ellers {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} ellers {}}}}}}}}}}}}}}}}}
Trin 4: Korrektion af værdier
Når du åbner den serielle moniter, viser den en værdi på 1023, hvis du trykker på en knap, giver det dig en anden aflæsning, du skal tage disse værdier og foretage nogle ændringer i koden
Trin 5: Projekt efter kritik og anmeldelse
Der er ingen tvivl om, at vi alle er her for at lære og dele vores viden, takket være nogle kommentarer fra nogle mennesker fra samfundet, der var meget hjælpsomme, besluttede jeg at foretage nogle justeringer og forbedringer af mit projekt:
Hardwaren:
Jeg besluttede at lodde alle komponenter i et printkort for at undgå problemet med dårlig forbindelse i brødbrædderne.
Koden:
En ven rådede mig til at bruge en software, der debouncer, og det er bare en loop (f.eks. "For" loop) for at få programmet til at tage lidt tid at vælge en læsning, det betyder, at det laver en masse læsninger (500 i min eksamen), men tager kun den sidste.
for (i = 1; i <= 500; i ++) {// tag kun den 500. analoge læsning
value = analogRead (Button);} // det er hjælp til at tage lidt tid og undgå dårlige aflæsninger
En anden ven takket være ham rådede mig til at sammenligne "readvalue" med en række værdier ikke en, fordi "readvalue" tager mange værdier for den samme trykknap. "A" giver f.eks. En læsning af: 849, 850, 851852, 853, 854, 855, så det er et område på 7 værdier: en tærskel (852) og 3 værdier til venstre og højre. hvad vi skal gøre her er at sammenligne den absolutte værdi af forskellen mellem "readvalue" og "852" til "3".
hvis (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
Trin 6: Efter noget solgt arbejde
Trin 7: Sandhedens øjeblik
Som du kan se, forvirrer programmet nogle gange knapper, men det virker stadig, i teorien er der ikke noget galt med kredsløbet, men koden har brug for mere kalibrering.
Trin 8: Slutningen
Jeg håber, at du kan lide dette projekt, og du prøver at gøre det. Måske vil du gøre det bedre, end jeg gjorde.
Spørg mig, hvis du har spørgsmål, efterlad kommentarer, og glem ikke at stemme på mig, hvis du kan lide det.
Anbefalede:
Tastatur Servolås: 5 trin
Tastatur Servo Lock: Hej alle sammen, håber i havde en god dag. Hvis ikke forhåbentlig kan du bare spole tilbage med et åbent sind til denne vejledning og noget terapeutisk musik. Programmering kan være besværligt. Heldigvis er denne vejledning ikke noget besvær, så du kan måske klare
Etui til Preonic Rev 3 -tastatur: 4 trin
Etui til Preonic Rev 3 -tastatur: Jeg har for nylig købt en Preonic Rev. 3 fra Drop.com (skamløs stik: https://drop.com/?referer=ZER4PR) og kunne ikke vente med at bygge den. Desværre undersøgte jeg ikke nok til at finde ud af, at Rev. 3 PCB ikke ville passe i Rev.2 -sagerne og de fleste af de
One Pin Tastatur Raspberry Pi Brugsguide: 9 trin
One Pin -tastatur Raspberry Pi -brugsguide: ANSVARSFRASKRIVELSE: DETTE ER EN BRUGSVEJLEDNING TIL ET ÅBEN KILDEPRODUKT: ENKELT TASTATUR. DETTE ER IKKE ET DIY -PROJEKT. HVIS DU VIL GØRE TAVLERNE SELV, KAN ØNNESFILERNE FINDES I AFSLUTNINGEN AF TUTORIALET.Hvad er One Pin -tastaturet? Et pin -tastatur
Hurtigt og snavset tastatur (tomt tastatur): 3 trin
Quick and Dirty Das Keyboard (Blank Keyboard): A Das Keyboard is the name of the most popular keyboard with no inscriptions on the keys (blank keyboard). Das tastatur sælges til $ 89,95. Denne instruktive vil guide dig, selvom du selv laver en med et gammelt tastatur, du har liggende
ISP 6 Pin til 8 Pin Socket: 4 trin
ISP 6 Pin til 8 Pin Socket: Grunden til at jeg hovedsageligt byggede dette projekt var at programmere ATTiny45, som har en 8 pin forbindelse, mens min USBtinyISP (fra Ladyada) kun har en 10 pin og 6 pin forbindelse. Efter at have snoket rundt på internettet i cirka 3-4 uger fandt jeg ikke noget, hvad