Annons
Att lära sig använda GPIO-stiften på din Raspberry Pi öppnar upp en hel värld av möjligheter. De grundläggande principerna lärda genom nybörjare projekt banar vägen mot användbar kunskap om både DIY-elektronik och programmering.
Den här tutorialen visar dig två sätt att lägga till en knapp till ditt Raspberry Pi-projekt. Knappen används för att styra en LED. Skriftliga instruktioner finns tillgängliga under videon.
Du kommer behöva
För att komma igång, se till att du har följande komponenter:
- 1 x Raspberry Pi (Vilket 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 ljusare)
- 1 x brödbräda
- Koppla upp ledningar
När du väl har samlats in bör du ha komponenter som ser ut så här:
Du behöver också ett SD-kort med Raspbian operativsystem installerat. Det snabbaste sättet att göra detta är med bilden NOOBS (New Out Of the Box Software). Instruktioner för hur du gör detta finns i den här videon:
Ställa in kretsen
Du kommer att använda GPIO-stiften på Pi för att göra kretsen, och om du inte känner till dem vår guide till Raspberry Pi GPIO-stift kommer att hjälpa. Kretsen här är nästan densamma som i vår tidigare Raspberry Pi LED-projekt, med tillägg av den knapp du använder idag.
Ställ in din krets enligt detta diagram:
- De 5v och GND stift ansluts till spåren på brödskivan.
- Stift 12 (GPIO 18) ansluts till lysdiodens positiva ben.
- Ett ben av motstånd fästs vid LED: s negativa ben, och det andra benet fästs på jordskivan på brädskivan.
- Stift 16 (GPIO 23) fästs på den ena sidan av knappen, den andra sidan fästs på jordskena på brödskivan.
Så snart den har konfigurerats så ska det se ut:
Kontrollera din krets för att se till att den är korrekt och slå sedan på Raspberry Pi.
Metod 1: RPi. GPIO-bibliotek
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 i Python är det ett bra språk för nybörjare och det finns det många bra ställen att lära sig mer om Python när du är klar med den här tutorialen!
Börja med att importera RPi. GPIO-bibliotek och inställning av kortläge.
importera RPi. GPIO som GPIO GPIO.setmode (GPIO.BOARD)
Förklara nu variablerna för LED- och knappstiftenumret.
ledPin = 12. buttonPin = 16.
Observera att eftersom vi har kortläget inställt på STYRELSE vi använder pin-numren snarare än GPIO-numren. Om det är förvirrande för dig kan ett Raspberry Pi-urklippsdiagram hjälpa till att rensa det.
Ställa in knappen
Det är dags att ställa in GPIO-stiften. Ställ in LED-stiftet på utgången och knappstiftet för att mata in ett dragmotstå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 uppdragningsmotstånd av Raspberry Pi. Du måste aktivera detta för att få en ren avläsning från knappen. Eftersom knappen går till jordstiftet behöver vi ett dragmotstånd för att hålla inmatningsstiftet HÖG tills du trycker på den.
Innan vi fortsätter, låt oss titta på pull-up och pull-down motstånd.
Avbrott: Dra upp / dra ner motstånd
När du konfigurerar en GPIO-stift att mata in läser den den för att bestämma dess tillstånd. I den här kretsen måste du läsa om en stift är det HÖG eller LÅG för att utlösa lysdioden när knappen trycks in. Detta skulle vara enkelt om det var de enda tillstånden en stift kan ha, men tyvärr finns det ett tredje tillstånd: FLYTANDE.
En flytande stift har ett värde mellan högt och lågt, vilket gör att ingången agerar oförutsägbart. Pull-up / pull-down-motstånd löser detta.
Bilden ovan är ett förenklat diagram över en knapp och en Raspberry Pi. GPIO-stiftet ansluts till marken genom knappen. Det interna uppdragningsmotståndet fäster GPIO-stiftet i den interna Pi-strömförsörjningen. Denna ström flyter och stiftet dras säkert upp till HÖG.
När du trycker på knappen ansluts GPIO-stiftet direkt till markstiftet och knappen läses lågt.
Neddragningsmotstånd är avsedda för när omkopplaren är ansluten till strömstiftet. Den här gången fäster det interna motståndet GPIO-stiftet i marken och håller LÅGT 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 riktigt förstår det, oroa dig inte!
Låt oss fortsätta där vi slutade.
Programslingan
Sätt sedan upp programslingan:
medan True: buttonState = GPIO.input (buttonPin) om buttonState == False: GPIO.output (ledPin, GPIO.HIGH) annat: GPIO.output (ledPin, GPIO.LOW)
De medan sant loop kör kontinuerligt koden inuti den tills vi avslutar programmet. Varje gång den slingrar uppdaterar den buttonState genom att läsa inmatningen från buttonPin. Medan knappen inte trycks in förblir den HÖG.
När knappen trycks in, buttonState blir LÅG. Detta utlöser om uttalande, eftersom Falsk är det samma som LÅGoch lysdioden tänds. De annan uttalande stänger av lysdioden när knappspinnet inte är falskt.
Spara och kör ditt skript
Spara ditt skript genom att klicka Arkiv> Spara som och välja ett filnamn. Du kan köra skissen genom att klicka på det gröna Spela -knappen i Thonny-verktygsfältet.
Tryck nu på knappen så lysdioden ska lysa! Tryck på det röda Sluta när som helst för att stoppa programmet
Om du har problem kan du kontrollera din kod och kretsinställning noggrant för fel och försök igen.
Metod 2: GPIO Zero Library
RPi. GPIO-biblioteket är fantastiskt, men det finns ett nytt barn på kvarteret. GPIO Zero Library var skapad av Raspberry Pi community manager Ben Nuttall med avsikt att göra koden 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 signalimportpaus.
Du kommer att märka att du inte importerade hela biblioteket. Eftersom du bara använder en LED och knapp behöver du bara de modulerna i skriptet. Vi importerar också Paus från signalbiblioteket, som är ett Python-bibliotek för evenemangshantering.
Det är mycket lättare att ställa in stiften med GPIO Zero:
led = LED (18) knapp = knapp (23)
Eftersom GPIO Zero-biblioteket har moduler för lysdioden och knappen behöver du inte ställa in ingångar och utgångar som tidigare. Du kommer att märka att även om stiften inte har ändrats är siffrorna här olika från ovan. Det beror på att GPIO Zero bara använder GPIO-stiftnumren (även känd som Broadcom- eller BCM-nummer).
Resten av skriptet är bara tre rader:
button.when_pressed = led.on. button.when_released = led.off paus ()
De paus() samtal här stoppar helt enkelt skriptet från att gå ut när det når botten. Händelserna med två knappar aktiveras när knappen trycks in och släpps. Spara och kör ditt skript så ser du samma resultat som tidigare!
Två sätt att lägga till en knapp till Raspberry Pi
Av de två sätten att ställa in knappen tycks GPIO Zero-metoden vara den enklaste. Det är fortfarande värt att lära sig om RPi. GPIO-bibliotek som mest nybörjande Raspberry Pi-projekt Använd den. Så enkelt som detta projekt är, kan kunskapen användas för ett antal saker.
Att använda GPIO-stiften är ett bra sätt att lära sig och uppfinna dina egna enheter, men det är långt ifrån allt du kan göra med Pi. Vår inofficiell guide till Raspberry Pi Raspberry Pi: Den inofficiella självstudienOavsett om du är en nuvarande Pi-ägare som vill lära dig mer eller en potentiell ägare av denna kreditkortsstorlek, är detta inte en guide du vill missa. Läs mer är full av kreativa idéer och självstudier du kan prova själv! För en annan tutorial som denna, kolla in hur man skapar en Wi-Fi-ansluten knapp Hur du skapar din egen Wi-Fi-anslutna knapp med ESP8266I den här handledningen lär du dig att skapa en Wi-Fi-aktiverad knapp med NodeMCU och IFTTT. Läs mer .
Ian Buckley är frilansjournalist, musiker, artist och videoproducent bosatt i Berlin, Tyskland. När han inte skriver eller på scenen tänker han på DIY-elektronik eller kod i hopp om att bli en gal forskare.