2 sätt att lägga till en knapp till ditt hallon Pi-projekt
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äg för användbar kunskap om både DIY-elektronik och programmering.
Den här tutorialen visar 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 tillgängliga 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 hjälper vår guide till Raspberry Pi GPIO-stift. Kretsen här är nästan densamma som i vårt tidigare Raspberry Pi LED-projekt, med den knapp du använder idag.
Ställ in din krets enligt detta diagram:
- 5v- och GND- stiften ansluts till kraftbrädans spår.
- Stift 12 (GPIO 18) ansluts till lysdiodens positiva ben.
- Det ena benet på motståndet fästs på LED: s negativa ben, och det andra benet fästs på jordskena 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.
När det väl är konfigurerat 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-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 i Python är det ett bra språk för nybörjare och det finns många fantastiska platser att lära sig mer om Python efter att du har gjort det med den här tutorialen!
Börja med att importera RPi.GPIO-biblioteket och ställa in kortläget.
import RPi.GPIO as 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å BOARD använder vi stiftnumren 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 den inre uppdragsmotståndet för 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 för inmatning 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 HÖG eller LÅG för att trigga 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: FLYGNING .
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 uppdragsmotståndet fäster GPIO-stiftet på 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:
while True: buttonState = GPIO.input(buttonPin) if buttonState == False: GPIO.output(ledPin, GPIO.HIGH) else: GPIO.output(ledPin, GPIO.LOW)
Medan True loop kör kontinuerligt koden inuti den tills vi avslutar programmet. Varje gång den loopar uppdaterar den knappenState genom att läsa inmatningen från buttonPin . Medan knappen inte trycks in förblir den HÖG .
När knappen trycks in blir knappStat LÅG . Detta utlöser if-uttalandet, eftersom falskt är samma som LÅG och lysdioden tänds. Det andra påståendet stänger av lysdioden när knappspinnet inte är falskt.
Spara och köra ditt skript
Spara skriptet genom att klicka på Arkiv> Spara som och välja ett filnamn. Du kan köra skissen genom att klicka på den gröna Play- knappen i Thonny-verktygsfältet.
Tryck nu på knappen så lysdioden ska lysa! Tryck på den röda stoppknappen när som helst för att stoppa programmet
Om du har problem, 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 skapades 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.
from gpiozero import LED, Button from signal import pause
Du kommer att märka att du inte har importerat hela biblioteket. Eftersom du bara använder en LED och knapp behöver du bara de modulerna i skriptet. Vi importerar också Pause 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) button = Button(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 endast 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 pause()
Paus () -samtalet här hindrar helt enkelt skriptet från att lämna 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-biblioteket eftersom de flesta nybörjande Raspberry Pi-projekt använder det. 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 inofficiella guide till Raspberry Pi Raspberry Pi: Den inofficiella handledning Raspberry Pi: Den inofficiella självstudien Oavsett om du är en aktuell Pi-ägare som vill lära dig mer eller en potentiell ägare av denna kreditkortsstorlekenhet, är det inte en guide du vill missa. Read More är full av kreativa idéer och självstudier du kan prova själv! För ytterligare en självstudie som denna, kolla in hur du skapar en Wi-Fi-ansluten knapp Hur gör du din egen Wi-Fi-anslutna knapp med ESP8266 Hur gör du din egen Wi-Fi-anslutna knapp med ESP8266 I den här handboken 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-projektstudier, GPIO, Python, Raspberry Pi.