Ethvert projekt får før eller siden brug for en måde at interagere på, og det betyder ofte knapper. Men det kan være overraskende besværligt at forbinde knapper, især når du vil have mere end et par stykker. Der findes flere metoder, hver med sine styrker og begrænsninger, afhængigt af hvor mange indgange du skal bruge, og hvor ryddeligt dit kredsløb skal være.
Den enkleste metode er én knap pr. ben. Den er direkte og let at forstå: Forbind den ene side til stel og den anden til en GPIO med intern pull-up-modstand, og registrér, når signalet bliver lavt. Metoden er pålidelig, men skalerer dårligt: Fyld dit projekt med ti knapper, og du har brugt ti ben.
Matrixforbindelse er det næste logiske skridt. Ved at arrangere knapper i rækker og kolonner kan du reducere antallet af nødvendige ben markant. En 4×4-matrix giver eksempelvis seksten knapper med kun otte ben. Det er effektivt, men gør koden mere kompleks og kræver dioder, hvis du vil undgå fantomtryk, når flere knapper trykkes ned samtidig.
En anden almindelig tilgang bruger skifteregistre eller I/O-udvidere som 74HC165 eller MCP23017. De lader dig aflæse mange knapper med kun få ben via SPI eller I²C. Det er fleksibelt og skalerbart, men tilføjer omkostninger, komponenter og ekstra kode, hvilket ikke altid er ideelt til mindre projekter.
Så er der den smarte metode, som præsenteres i denne artikel fra Curious Scientist , der bruger en analog indgang til at håndtere flere knapper via forskellige modstandsværdier. Det er et overraskende praktisk trick, der minimerer ledningsføringen og stadig giver hver knap sin egen identitet. Hvis du nogensinde er løbet tør for GPIO'er eller bare ville forenkle dit design, er det værd at læse om.
I sidste ende afhænger den bedste knapløsning af, hvad du bygger. Til en lille gadget er direkte forbindelse fint. Til noget større – et kontrolpanel, et specialbygget tastatur eller et produkt med stramme pladskrav – kan matrix-, skifteregister- eller analoge metoder spare dig for en del hovedpine.
Hvis du er nysgerrig på den sidste tilgang og vil have en detaljeret gennemgang med virkelige eksempler og målinger, så læs Curious Scientists indlæg: