2 sätt att lägga till en knapp till ditt Raspberry Pi-projekt
Att lära sig att använda GPIO-tapparna på din Raspberry Pi öppnar en hel värld av möjligheter. De grundläggande principerna som lärt sig genom nybörjareprojekt banar vägen mot användbar kunskap om både DIY-elektronik och programmering.
Denna handledning visar dig två sätt att lägga till en knapp i ditt Raspberry Pi-projekt. Knappen kommer att användas för att styra en LED. Skriftliga instruktioner finns under videon.
Du kommer behöva
För att komma igång, se till att du har följande komponenter:
- 1 x Raspberry Pi (Alla kommer att göra, modell 3B används i denna handledning)
- 1 x tryckknapp
- 1 x LED
- 1 x 220 ohm motstånd (högre värden är bra, din lysdiod blir bara dimmer)
- 1 x brödbräda
- Haka upp ledningar
När du väl samlat, borde du ha komponenter som ser något ut så här:
Du behöver också ett SD-kort med operativsystemet Raspbian installerat. Det snabbaste sättet att göra detta är med NOOBS-bilden (New Out Of the Box Software). Instruktioner om hur man gör det här är tillgängliga i den här videon:
Ställa in kretsen
Du kommer att använda GPIO-pinnarna i Pi för att göra kretsen, och om du inte känner till dem hjälper vår guide till Raspberry Pi GPIO-stiften. Kretskortet här är nästan detsamma som i vårt tidigare Raspberry Pi LED-projekt, med tillägg av knappen du använder idag.
Ställ in din krets enligt detta diagram:
- De 5v och GND stiften ansluter till brödskivans mätspår.
- Pin 12 (GPIO 18) ansluts till LED: s positiva ben.
- Ett ben av motstånd fäster på LED: ns negativa ben, och det andra benet fästs på bakplattan.
- Stift 16 (GPIO 23) fäster på den ena sidan av knappen, den andra sidan fästs på bakplattan på bakplattan.
När det är upprättat, så här ska det se ut:
Kontrollera över din krets för att försäkra dig om att den är korrekt, och sätt sedan på din Raspberry Pi.
Metod 1: RPi.GPIO-biblioteket
När Pi har startat, gå till menyn och välj Programmering> Thonny Python IDE. Ett nytt Python-skript öppnas. Om du är helt ny på Python är det ett bra språk för nybörjare och det finns många bra ställen att lära dig mer om Python när du är klar med den här handledningen!
Börja med att importera RPi.GPIO-biblioteket och ställa in styrläget.
importera RPi.GPIO som GPIO GPIO.setmode (GPIO.BOARD)
Angiv nu variablerna för LED- och knappens pinnummer.
ledPin = 12 knappPin = 16
Observera att eftersom vi har styrläget inställt på STYRELSE Vi använder pinnumren i stället för GPIO-numren. Om det är förvirrande för dig kan ett Raspberry Pi pinout-diagram hjälpa till med att rensa upp det.
Ställa in knappen
Det är dags att ställa in GPIO-stiften. Ställ in LED-stiftet för att mata ut, och knappens stift för att mata in med ett uppdragsmotstånd
GPIO.setup (ledPin, GPIO.OUT) GPIO.setup (buttonPin, GPIO.IN, pull_up_down = GPIO.PUD_UP)
Texten efter GPIO.IN hänvisar till internt upptagningsmotstånd av Raspberry Pi. Du måste aktivera detta för att få en ren läsning från knappen. Eftersom knappen går till jordstiftet behöver vi ett dragmotstånd för att hålla in ingångsstaven HIGH tills du trycker på den.
Innan vi fortsätter, låt oss titta på drag- och dragmotstånd.
Avstängning: Drag upp / Drag ner motstånd
När du konfigurerar en GPIO-pin för att mata in, läser den den nålen för att bestämma dess tillstånd. I denna krets måste du läsa om en stift är HÖG eller LÅG för att utlösa lysdioden när knappen trycks ned. Det skulle vara enkelt om det var de enda staterna en pin kan ha, men tyvärr finns det ett tredje land: FLYTANDE.
En flytande stift har ett värde mellan hög och låg, vilket gör att ingången kan agera oförutsägbart. Drag-up / pull-down motstånd lösa detta.
Ovanstående bild är ett förenklat diagram över en knapp och en Raspberry Pi. GPIO-stiftet ansluter till marken genom knappen. Det interna upptagningsmotståndet fäster GPIO-stiftet till den interna Pi-strömförsörjningen. Denna ström flyter och stiftet är säkert upptaget till HÖG.
När du trycker på knappen kopplar GPIO-stiftet direkt till jordnålen och knappen läser lite.
Dragmotstånd är för när omkopplaren är ansluten till elnålen. Den här gången fäster det inre motståndet GPIO-stiftet till marken och håller i LOW tills du trycker på knappen.
Pull-up och pull-down motståndsteori är förvirrande vid första anblicken, men viktig kunskap att ha när man arbetar med mikrokontroller. För nu, om du inte helt förstår det, oroa dig inte!
Låt oss fortsätta där vi slutade.
Program Loop
Ställ sedan upp programslingan:
medan True: buttonState = GPIO.input (buttonPin) om buttonState == False: GPIO.output (ledPin, GPIO.HIGH) annars: GPIO.output (ledPin, GPIO.LOW)
De medan sant slingan löper löpande koden inuti den tills vi avslutar programmet. Varje gång det loopar uppdateras den buttonState genom att läsa in inmatningen från buttonPin. Medan knappen inte trycks, stannar den HÖG.
När knappen trycks in, buttonState blir LÅG. Detta utlöser om uttalande, eftersom Falsk är det samma som LÅG, och lysdioden lyser. De annan uttalandet släpper lysdioden av när knapptrycket inte är falskt.
Spara och kör ditt script
Spara ditt skript genom att klicka på Arkiv> Spara som och välja ett filnamn. Du kan köra skissen genom att klicka på den gröna Spela knappen i Thonny verktygsfältet.
Tryck nu på knappen och din LED ska lysa! Tryck på den röda Sluta knappen när som helst för att stoppa programmet
Om du har problem, kontrollera din kod och konfiguration av kretskortet grundligt för fel och försök igen.
Metod 2: GPIO Zero Library
Biblioteket RPi.GPIO är fantastiskt, men det finns ett nytt barn på kvarteret. GPIO Zero Library skapades av Raspberry Pi community manager Ben Nuttall med avsikt att göra kod enklare och lättare att läsa och skriva.
För att testa det nya biblioteket öppnar du en ny Thonny-fil och importerar biblioteket.
från gpiozero import LED, Knapp från signal import paus
Du märker att du inte importerade hela biblioteket. Eftersom du bara använder en LED och en knapp behöver du bara de modulerna i skriptet. Vi importerar också Paus från signalbiblioteket, vilket är ett Python-bibliotek för händelsehantering.
Att ställa in stiften är mycket lättare med GPIO Zero:
LED = LED (18) knapp = Knapp (23)
Eftersom GPIO Zero-biblioteket har moduler för LED och knapp behöver du inte ställa in ingångar och utgångar som tidigare. Du kommer märka att trots att stiften inte har ändrats, siffrorna här skiljer sig från ovan. Det beror på att GPIO Zero endast använder GPIO-pinnumren (även känd som Broadcom eller BCM-nummer).
Resten av manuset är bara tre rader:
button.when_pressed = led.on button.when_released = led.off paus ()
De paus() ring här stoppar helt enkelt skriptet från att gå ut när det når botten. Två-knapps händelser utlöses när knappen trycks och släpps. Spara och kör ditt skript och du kommer att se samma resultat som tidigare!
Två sätt att lägga till en knäppning till hallon Pi
Av de två sätten att ställa in knappen verkar GPIO Zero-metoden vara den enklaste. Det är fortfarande värt att lära sig om RPi.GPIO-biblioteket eftersom de flesta nybörjare Raspberry Pi-projekt använder det. Så enkelt som det här projektet är kan kunskapen användas för ett antal saker.
Använda GPIO-stiften är ett bra sätt att lära och uppfinna dina egna enheter, men det är långt ifrån allt du kan göra med Pi. Vår inofficiella guide till Raspberry Pi Raspberry Pi: Den inofficiella handledningen Raspberry Pi: Den inofficiella handledningen Om du är en nuvarande Pi-ägare som vill lära sig mer eller en potentiell ägare av denna kreditkortstorlek, är det här inte en guide du vill sakna Läs mer är full av kreativa idéer och handledning du kan prova själv! För en annan handledning så här, kolla in hur du gör en Wi-Fi-ansluten knapp. Så här gör du din egen Wi-Fi-anslutna knapp med ESP8266 Så här skapar du din egen Wi-Fi-anslutna knapp med ESP8266 I den här handledningen lär du dig hur för att skapa en Wi-Fi-aktiverad knapp med NodeMCU och IFTTT. Läs mer .
Utforska mer om: DIY Project Tutorials, GPIO, Python, Raspberry Pi.