Inhoudsopgave:

Een 4x4 toetsenbord gebruiken met CircuitPython: 4 stappen
Een 4x4 toetsenbord gebruiken met CircuitPython: 4 stappen

Video: Een 4x4 toetsenbord gebruiken met CircuitPython: 4 stappen

Video: Een 4x4 toetsenbord gebruiken met CircuitPython: 4 stappen
Video: 🇳🇱 SSD1331 KLEUREN OLED DISPLAY (96X64 PIXELS) - Arduino les #25 2024, Juni-
Anonim
Een 4x4 toetsenbord gebruiken met CircuitPython
Een 4x4 toetsenbord gebruiken met CircuitPython

Dit goedkope toetsenbord biedt een eenvoudige methode voor numerieke invoer voor uw CircuitPython-projecten. Ik ga het gebruiken met een Adafruit ItsyBitsy M0 express.

Je zal nodig hebben:

  • Toetsenbord - de mijne is 4x4
  • ItsyBitsy M0 Express of vergelijkbaar bord
  • Mu Editor geïnstalleerd op uw computer
  • USB-kabel om de code te laten knipperen

Stap 1: Hoe het toetsenbord werkt

Hoe het toetsenbord werkt
Hoe het toetsenbord werkt

Het toetsenbord heeft 16 eenvoudige, langzaam werkende bellenschakelaars die zijn gerangschikt in een 4 per raster met 8 aansluitingen aan de onderkant. Als we van links nummeren van 0 tot 7, zijn de verbindingen 0 tot 3 verbonden met elk van de rijen. Aansluiting 0 op de bovenste rij en aansluiting 3 op de onderste rij. Aansluitingen 4 t/m 7 worden aangesloten op de kolommen met aansluiting 4 op de linkerkolom en aansluiting 7 op de rechterkolom. Elk van de 16 schakelaars maakt een verbinding tussen een andere rij/kolom-combinatie. Als we op toets7 drukken, wordt de derde rij samengevoegd met de linkerkolom. We kunnen voelen of de 5-toets wordt ingedrukt als de rij HOOG wordt verhoogd en we kunnen een HOOG op de kolom lezen. Om dit te doen, OUTPUT naar de rijen en INPUT uit de kolommen.

We moeten elke rij om de beurt HOOG instellen, terwijl de andere rijen LAAG zijn, lees elke kolom om de beurt totdat we een HOGE invoer krijgen. Dit is eenvoudig te beheren met geneste for-lussen.

We moeten er rekening mee houden dat deze bellenschakelaars vrij traag werken en behoorlijk hard moeten worden ingedrukt om ze te sluiten. Het scannen van alle 16 schakelaars op deze manier kan heel snel, maar we moeten herhaaldelijk scannen om een toetsaanslag op te pikken. We moeten ook 'debouncen' met een korte vertraging, zodat we niet elke keer dat we drukken de toetsen herhalen.

Omdat de schakelaars nogal 'squishy' zijn, hebben we wat feedback aan de gebruiker nodig om aan te geven dat een toetsaanslag is gelezen. De ingebouwde LED knippert elke keer dat er een toets wordt ingedrukt.

Stap 2: Fysieke verbindingen

Fysieke verbindingen
Fysieke verbindingen

Aansluitingen van links naar rechts op KeyPad0 1 2 3 4 5 6 7

D7 D9 D10 D11 A5 A4 A3 A2 op ItsyBitsy

D7 tot D11 zijn ingesteld als OUTPUT's, terwijl A5 tot A2 zijn ingesteld als INPUT's met PULLDOWN.

De code heeft veel opmerkingen en zou vrij gemakkelijk te volgen moeten zijn.

Stap 3: Hoe Getkey() werkt

Hoe Getkey() werkt
Hoe Getkey() werkt

Deze functie scant het toetsenbord op een enkele toetsdruk. Het controleert snel elk van de sleutels om de beurt, maximaal 10 keer om te zien of een sleutelschakelaar gesloten is. Als een toets wordt ingedrukt, wordt de toetswaarde geretourneerd, geteld van links naar rechts van boven naar beneden (0 …15) Let op de waarden voor de onderste rij: 14, 0, 15, 13 (Hex E, 0, F, D). Als er geen toets werd ingedrukt, wordt -999 geretourneerd als een foutcode die gemakkelijk kan worden opgehaald in het hoofdprogramma. De ingebouwde LED knippert als een toetsaanslag wordt opgepikt als feedback van de gebruiker. Dit gaat vrij snel en de de-bounce wachttijd van 0,2 seconden wordt alleen gebruikt als er een toets wordt ingedrukt.

Stap 4: Getvalue(cijfers)

Getvalue(cijfers)
Getvalue(cijfers)

Deze routine levert een n-cijferige waarde van de numerieke toetsen. Het negeert de rode toetsen.

Deze Python-code kan eenvoudig worden geconverteerd om op een ander apparaat te draaien, zoals een Raspberry Pi, je hoeft waarschijnlijk alleen de pin-setupregels bovenaan het script te wijzigen.

Laat het me weten als je de code nuttig vindt.

Blijf veilig en veel plezier!

Aanbevolen: