Innholdsfortegnelse:
- Trinn 1: Materialregning
- Trinn 2: Skjematisk og Cicruit
- Trinn 3: Koden
- Trinn 4: Korreksjon av verdier
- Trinn 5: Prosjekt etter kritikk og anmeldelse
- Trinn 6: Etter noe soldringarbeid
- Trinn 7: Sannhetens øyeblikk
- Trinn 8: slutten
Video: One Pin 4 × 4 tastatur: 10 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Hver gang jeg ser et tastatur, kommer det med mange pinner, det er et stort sløsing med dine Arduino -pinner, så kan vi kjøre et tastatur med en og bare en pinne?. Svaret er her.
Trinn 1: Materialregning
Maskinvare:
01 Arduino UNO
02 Brødbrett
01 LCD med I2C
16 trykknapper
04 motstander 1,5 kΩ
04 motstander 620 Ω
04 motstander 220 Ω
08 motstander 100 Ω
01 motstand 1 kΩ
07 Hoppetråder
Programvare:
Arduino IDE installert på din PC
Trinn 2: Skjematisk og Cicruit
Hele ideen er at vi har 4*4 matrise av trykknapper som er koblet vertikalt til bakken med høyre ledning og horisontalt med den andre ledningen (knappledningen) og motstander på 1,5 kΩ, 620Ω, 220Ω og 100Ω, endene på de 4 radene er forbundet med fire 100Ω motstander som vist skjematisk.
Hver gang du trykker på en knapp, lukker du kretsen og strømmen går gjennom en annen bane og forskjellige motstandskjeder, derfor får pin A0 en annen analog lesning for hver trykknapp. Alt du trenger nå er koding.
Trinn 3: Koden
#inkludere
#inkludere
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int Knapp = A0;
int leseverdi;
ugyldig oppsett ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (Knapp, INNGANG);
lcd.backlight ();
lcd.print ("Hei verden");
forsinkelse (2000);
lcd.clear ();
lcd.print ("Ett penn 4*4 tastatur");
forsinkelse (2000); }
hulrom ()
{
readvalue = analogRead (Button);
Serial.println (leseverdi);
if (readvalue == 852) {lcd.clear (); lcd.print ("A");}
annet {if (readvalue == 763) {lcd.clear (); lcd.print ("B");}
annet {if (readvalue == 685) {lcd.clear (); lcd.print ("C");}
annet {if (readvalue == 965) {lcd.clear (); lcd.print ("D");}
annet {if (readvalue == 565) {lcd.clear (); lcd.print ("9");}
annet {if (readvalue == 614) {lcd.clear (); lcd.print ("6");}
annet {if (readvalue == 360) {lcd.clear (); lcd.print ("3");}
annet {if (readvalue == 335) {lcd.clear (); lcd.print ("#");}
annet {if (readvalue == 396) {lcd.clear (); lcd.print ("8");}
annet {if (readvalue == 349) {lcd.clear (); lcd.print ("5");}
annet {if (readvalue == 235) {lcd.clear (); lcd.print ("2");}
annet {if (readvalue == 279) {lcd.clear (); lcd.print ("0");}
annet {if (readvalue == 452) {lcd.clear (); lcd.print ("7");}
annet {if (readvalue == 271) {lcd.clear (); lcd.print ("4");}
annet {if (readvalue == 170) {lcd.clear (); lcd.print ("1");}
annet {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} annet {}}}}}}}}}}}}}}}}}
Trinn 4: Korreksjon av verdier
Når du åpner serieovervåking vil den vise en verdi på 1023, hvis du trykker på en knapp vil det gi deg en annen måling du må ta disse verdiene og gjøre noen endringer i koden
Trinn 5: Prosjekt etter kritikk og anmeldelse
Det er ingen tvil om at vi alle er her for å lære og dele vår kunnskap, takket være noen kommentarer fra noen mennesker fra samfunnet som var veldig hjelpsomme, bestemte jeg meg for å gjøre noen justeringer og forbedringer av prosjektet mitt:
Maskinvaren:
Jeg bestemte meg for å lodde alle komponentene i et PCB for å unngå problemet med dårlig tilkobling i brødbrettene.
Koden:
En venn rådet meg til å bruke en programvare som debouncing, og det er bare en loop ("for" loop for eksempel) for å få programmet til å ta litt tid å velge en lesning, det betyr at det gjør mange avlesninger (500 i eksamenen min), men tar bare den siste.
for (i = 1; i <= 500; i ++) {// ta bare den 500. analoglesningen
value = analogRead (Button);} // det er hjelp til å ta litt tid og unngå dårlige avlesninger
En annen venn takket være ham rådet meg til å sammenligne "readvalue" med en rekke verdier, ikke en fordi "readvalue" tar mange verdier for den samme trykknappen. "A" gir for eksempel en lesing på: 849, 850, 851852, 853, 854, 855, så det er et område på 7 verdier: en terskel (852) og 3 verdier til venstre og høyre. det vi må gjøre her er å sammenligne den absolutte verdien av forskjellen mellom "readvalue" og "852" til "3".
if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
Trinn 6: Etter noe soldringarbeid
Trinn 7: Sannhetens øyeblikk
Som du kan se, forvirrer programmet noen ganger knapper, men det fungerer fortsatt, i teorien er det ingenting galt med kretsen, men koden trenger mer kalibrering.
Trinn 8: slutten
Jeg håper du liker dette prosjektet og at du prøver å gjøre det. Kanskje du kommer til å gjøre det bedre enn jeg gjorde.
Spør meg om du har spørsmål, legg igjen kommentarer og ikke glem å stemme på meg hvis du liker det.
Anbefalt:
Tastatur Servolås: 5 trinn
Tastatur Servolås: Hei alle sammen, håper dere har hatt en god dag. Hvis ikke forhåpentligvis kan du bare spole tilbake med et åpent sinn til denne opplæringen og litt terapeutisk musikk. Programmering kan være vanskelig. Heldigvis er denne opplæringen ikke noe problem, så du kan kanskje oppnå
Brukerveiledning for One Pin -tastatur Raspberry Pi: 9 trinn
One Pin Tastatur Raspberry Pi Bruksveiledning: ANSVARSFRASKRIVELSE: DETTE ER EN BRUKSVEILEDNING FOR ET ÅPEN KILDEPRODUKT: ONE PIN -TASTATUREN. DETTE ER IKKE ET DIY -PROJEKT. HVIS DU VIL LAGE STYRENE SELV, KAN ØRNFILENE FINNES PÅ SLUTTEN AV VEILEDNINGEN. Hva er tastaturet med ett pinne? Ett tastatur
Hurtig og skittent tastatur (tomt tastatur): 3 trinn
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 -tastaturet selges for $ 89,95. Denne instruksen vil guide deg selv om du lager en selv med et gammelt tastatur du har liggende
Rengjøring av Apple Aluminium-tastatur . eller annet mykt tastatur: 5 trinn
Rengjøring av Apple Aluminiumstastatur …. eller annet mykt tastatur: Så rent som du eller jeg kan prøve å beholde våre eple-tastaturer i aluminium, blir de skitten etter et år eller så. Denne instruksen er å hjelpe deg med å rense den. Vær forsiktig, for jeg er ikke ansvarlig hvis tastaturet går i stykker mens du gjør dette …. SUKKER F
ISP 6 Pin til 8 Pin Socket: 4 trinn
ISP 6 Pin til 8 Pin Socket: Grunnen til at jeg hovedsakelig bygde dette prosjektet var å programmere ATTiny45, som har en 8 -pins tilkobling, mens min USBtinyISP (fra Ladyada) bare har en 10 pin og 6 pin tilkobling. Etter å ha snokket rundt på internett i ca 3-4 uker fant jeg ingenting hva