Inhoudsopgave:
- Stap 1: Stuklijst
- Stap 2: Schema en Cicruit
- Stap 3: De code
- Stap 4: correctie van waarden
- Stap 5: Project na kritiek en beoordeling
- Stap 6: Na wat soldeerwerk
- Stap 7: Het moment van de waarheid
- Stap 8: Het einde
Video: Een pin 4×4 toetsenbord - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Elke keer als ik een toetsenbord zie, komt het met veel pinnen, het is een grote verspilling van je Arduino-pinnen, dus kunnen we een toetsenbord gebruiken met één en slechts één pin?. Het antwoord is hier.
Stap 1: Stuklijst
Hardware:
01 Arduino UNO
02 Broodplanken
01 LCD met I2C
16 drukknoppen
04 weerstanden 1,5 kΩ
04 weerstanden 620
04 weerstanden 220
08 weerstanden 100
01 weerstand 1 kΩ
07 Jumperdraden
Software:
Arduino IDE geïnstalleerd op uw pc
Stap 2: Schema en Cicruit
Het hele idee is dat we een 4 * 4-matrix van drukknoppen hebben die verticaal met de grond zijn verbonden door de rechterkabel en horizontaal door de andere kabel (de knopkabel) en weerstanden van 1,5 kΩ, 620Ω, 220Ω en 100Ω, de uiteinden van de 4 rijen zijn verbonden door vier 100Ω-weerstanden zoals weergegeven in het schema.
Elke keer dat je op een knop drukt, sluit je het circuit en gaat de stroom door een ander pad en een andere reeks weerstanden. Daarom krijgt pin A0 voor elke drukknop een andere analoge uitlezing. Alles wat je nu nodig hebt, is coderen.
Stap 3: De code
#erbij betrekken
#erbij betrekken
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int-knop = A0;
int leeswaarde;
ongeldige setup()
{
Serieel.begin(9600);
lcd.begin();
pinMode (Knop, INPUT);
lcd.achtergrondverlichting();
lcd.print("Hallo wereld");
vertraging (2000);
lcd.wissen();
lcd.print ("One pin 4*4-toetsenbord");
vertraging (2000); }
lege lus()
{
leeswaarde = analoog lezen (knop);
Serial.println(leeswaarde);
if (leeswaarde==852){lcd.clear();lcd.print("A");}
else{ if (readvalue==763){lcd.clear();lcd.print("B");}
anders{ if (leeswaarde==685){lcd.clear();lcd.print("C");}
else{ if (readvalue==965){lcd.clear();lcd.print("D");}
anders{ if (leeswaarde==565){lcd.clear();lcd.print("9");}
anders{ if (leeswaarde==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");}
anders{ if (leeswaarde==349){lcd.clear();lcd.print("5");}
anders{ if (leeswaarde==235){lcd.clear();lcd.print("2");}
anders{ if (leeswaarde==279){lcd.clear();lcd.print("0");}
anders{ if (leeswaarde==452){lcd.clear();lcd.print("7");}
anders{ if (leeswaarde==271){lcd.clear();lcd.print("4");}
anders{ if (leeswaarde==170){lcd.clear();lcd.print("1");}
anders{ if (readvalue==92){lcd.clear();lcd.print("*");}else{}}}}}}}}}}}}}}}} }
Stap 4: correctie van waarden
Wanneer u de seriële monitor opent, toont deze een waarde van 1023, als u op een knop drukt, krijgt u een andere meting, u moet die waarden nemen en enkele wijzigingen in de code aanbrengen
Stap 5: Project na kritiek en beoordeling
Het lijdt geen twijfel dat we hier allemaal zijn om te leren en onze kennis te delen, dankzij enkele opmerkingen van enkele mensen uit de gemeenschap die zeer nuttig waren, heb ik besloten om enkele aanpassingen en verbeteringen aan mijn project aan te brengen:
De hardware:
Ik besloot om alle componenten in een PCB te solderen om het probleem van een slechte verbinding in de breadboards te voorkomen.
De code:
Een vriend adviseerde me om een software-debouncing te gebruiken en het is gewoon een lus ("for"-lus bijvoorbeeld) om het programma wat tijd te laten nemen om een read te kiezen, het betekent dat het veel reads maakt (500 in mijn voorbeeld) maar duurt alleen de laatste.
for (i=1; i<= 500; i++) {// neem alleen de 500e analogread
value = analogRead (Button);} // dat is hulp om wat tijd te nemen om slechte metingen te voorkomen
Een andere vriend, dankzij hem, adviseerde me om "leeswaarde" te vergelijken met een reeks waarden, niet één omdat "leeswaarde" veel waarden nodig heeft voor dezelfde drukknop. De "A" geeft bijvoorbeeld een waarde van: 849, 850, 851 852, 853, 854, 855 dus het is een bereik van 7 waarden: een drempel (852) en 3 waarden links en rechts. wat we hier moeten doen, is de absolute waarde van het verschil tussen "leeswaarde" en "852" vergelijken met "3".
if(abs(readvalue-852)<=8){lcd.clear();lcd.print("A");}
Stap 6: Na wat soldeerwerk
Stap 7: Het moment van de waarheid
Zoals je kunt zien, verwart het programma soms knoppen, maar het werkt nog steeds, in theorie is er niets mis met het circuit, maar de code heeft meer kalibratie nodig.
Stap 8: Het einde
Ik hoop dat je dit project leuk vindt en dat je het probeert, misschien zul je het beter doen dan ik.
Stel me gerust als je vragen hebt, laat commentaar achter en vergeet niet op me te stemmen als je dat leuk vindt.
Aanbevolen:
Een USB-toetsenbord hacken: 6 stappen (met afbeeldingen)
Een USB-toetsenbord hacken: hoe u een USB-toetsenbord of welk toetsenbord dan ook hackt. Stuur input naar de computer zonder vervelende microcontroller
Een USB-hub maken van een oud toetsenbord ?♻: 3 stappen (met afbeeldingen)
Een USB-hub maken van een oud toetsenbord ?♻: As-Salaamu-Alaikum! Ik heb een oud toetsenbord dat niet in gebruik was en ook de toetsen waren een beetje defect. Dus besloot ik er iets aan te doen. Ik nam de printplaat en zette het om in "USB Hub".Het was gemakkelijk
Snel en vies Das-toetsenbord (leeg toetsenbord): 3 stappen
Snel en vies Das-toetsenbord (leeg toetsenbord): Een Das-toetsenbord is de naam van het populairste toetsenbord zonder inscripties op de toetsen (leeg toetsenbord). Het Das-toetsenbord kost $ 89,95. Deze instructable zal je helpen om er zelf een te maken met elk oud toetsenbord dat je hebt liggen
Een USB-toetsenbord installeren in een OLPC XO-laptop, fase I: 8 stappen (met afbeeldingen)
Een USB-toetsenbord installeren in een OLPC XO-laptop, fase I: ik weet niet hoe het met u zit, maar ik kan siliconen zeker van het echte werk onderscheiden. Hier leest u hoe u de gelei kunt dumpen en een normaal USB-toetsenbord met toetsen en veren in een OLPC XO-laptop kunt persen. Dit is "fase I" -- het toetsenbord in de l
De taak voltooien: een USB-toetsenbord installeren in een OLPC XO-laptop, fase II: 6 stappen
De klus afmaken: een USB-toetsenbord installeren in een OLPC XO-laptop, fase II: voor een man die het grootste deel van zijn leven heeft doorgebracht met zijn vingers verbonden met de thuisrij, heeft het toevoegen van dit USB-toetsenbord dat ik echt kan typen op een enorm verschil in de bruikbaarheid van de XO. Dit is "fase II" -- de kabel erin steken