2 måder at føje en knap til dit Raspberry Pi-projekt på
Reklame
At lære at bruge GPIO-pins på din Raspberry Pi åbner en hel verden af muligheder. De grundlæggende principper lært gennem nybegynderprojekter baner vejen for nyttig viden om både DIY elektronik og programmering.
Denne tutorial viser dig to måder at føje en knap til dit Raspberry Pi-projekt på. Knappen bruges til at styre en LED. Skriftlige instruktioner er tilgængelige under videoen.
Du får brug for
For at komme i gang skal du sikre dig, at du har følgende komponenter:
- 1 x Raspberry Pi (Alle vil gøre, model 3B bruges i denne tutorial)
- 1 x trykknap
- 1 x LED
- 1 x 220 Ohm modstand (Højere værdier er fine, din LED bliver bare lysere)
- 1 x Breadboard
- Tilslut ledninger
Når du først er samlet, skal du have komponenter, der ligner sådan:
Du har også brug for et SD-kort med Raspbian-operativsystemet installeret. Den hurtigste måde at gøre dette på er med billedet NOOBS (New Out Of the Box Software). Instruktioner til, hvordan man gør dette, findes i denne video:
Opsætning af kredsløbet
Du bruger PIO's GPIO-pins til at lave kredsløbet, og hvis du ikke kender dem, hjælper vores guide til Raspberry Pi GPIO-pins. Kredsløbet her er næsten det samme som i vores tidligere Raspberry Pi LED-projekt med tilføjelsen af den knap, du bruger i dag.
Indstil dit kredsløb i henhold til dette diagram:
- 5v- og GND- stifterne forbindes til spændeskinnen på brødbrættet.
- Pin 12 (GPIO 18) forbindes til den positive ben af LED.
- Det ene ben af modstanden fastgøres til LED's negative ben, og det andet ben fastgøres til jordskinnen på brødbrættet.
- Pin 16 (GPIO 23) fastgøres til den ene side af knappen, den anden side fastgøres til jordskinnen på brødbrættet.
Når det er konfigureret, er det sådan, det skal se ud:
Kontroller dit kredsløb for at sikre dig, at det er korrekt, og tænd derefter din Raspberry Pi.
Metode 1: RPi.GPIO-biblioteket
Når Pi er startet, skal du gå til menuen og vælge Programmering> Thonny Python IDE . Et nyt Python-script åbnes. Hvis du er helt ny med Python, er det et fantastisk sprog for begyndere, og der er mange gode steder at lære mere om Python, når du er færdig med denne tutorial!
Start med at importere RPi.GPIO-biblioteket, og indstil korttilstand.
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD)
Angiv nu variablerne for LED- og knapnålnumrene.
ledPin = 12 buttonPin = 16
Bemærk, at da vi har bordtilstanden indstillet til BOARD, bruger vi pin-numrene i stedet for GPIO-numrene. Hvis det er forvirrende for dig, kan et Raspberry Pi pinout-diagram hjælpe med at rydde det op.
Opsætning af knappen
Det er tid til at indstille GPIO-stifterne. Indstil LED-stiften til udgang, og knapstiften til at indtaste med en pull-up-modstand
GPIO.setup(ledPin, GPIO.OUT) GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Teksten efter GPIO.IN henviser til den interne pull-up-modstand for Raspberry Pi. Du skal aktivere dette for at få en ren læsning fra knappen. Da knappen går til jordstiften, har vi brug for en pull-up-modstand for at holde indgangsstiften HØJ, indtil du trykker på den.
Før vi fortsætter, lad os se på pull-up og pull-down modstande.
Pause: Træk op / træk modstande
Når du konfigurerer en GPIO-pin til input, læser den denne pin for at bestemme dens tilstand. I dette kredsløb skal du læse, om en pin er HØJ eller LAV for at udløse LED, når der trykkes på knappen. Dette ville være enkelt, hvis det var de eneste tilstande, en pin kan have, men desværre er der en tredje tilstand: FLOATING .
En flydende stift har en værdi mellem høj og lav, hvilket får input til at handle uforudsigeligt. Træk-op / ned-ned-modstande løser dette.
Ovenstående billede er et forenklet diagram over en knap og en Raspberry Pi. GPIO-pin forbindes til jorden gennem knappen. Den interne trækmodstand fastgør GPIO-stiften til den interne Pi-strømforsyning. Denne strøm flyder, og stiften trækkes sikkert op til HØJ.
Når du trykker på knappen, forbindes GPIO-stiften direkte til jordstiften, og knappen læser lavt.
Pull-down modstande er til, når kontakten er tilsluttet strømstiften. Denne gang fastgør den interne modstand GPIO-stiften til jorden og holder LAV ind, indtil du trykker på knappen.
Pull-up og Pull-down modstandsteori er forvirrende ved første øjekast, men vigtig viden at have, når man arbejder med mikrokontrollere. For øjeblikket, hvis du ikke helt forstår det, skal du ikke bekymre dig!
Lad os fortsætte, hvor vi slap.
Programsløjfen
Indstil derefter programsløjfen:
while True: buttonState = GPIO.input(buttonPin) if buttonState == False: GPIO.output(ledPin, GPIO.HIGH) else: GPIO.output(ledPin, GPIO.LOW)
Mens True- loop løbende kører koden inde i den, indtil vi afslutter programmet. Hver gang den sløjfer opdaterer den knappenState ved at læse input fra buttonPin . Mens der ikke trykkes på knappen, forbliver den HØJ .
Når der trykkes på knappen, bliver buttonState LAV . Dette udløser if-sætningen, da falsk er den samme som LAV, og LED-lampen tændes. Den anden erklæring slukker lysdioden, når knapspinden ikke er falsk.
Gem og kør dit script
Gem dit script ved at klikke på Filer> Gem som og vælge et filnavn. Du kan køre skitsen ved at klikke på den grønne Play- knap i Thonny-værktøjslinjen.
Tryk nu på knappen, og din LED skal lyse! Tryk når som helst på den røde Stop- knap for at stoppe programmet
Hvis du har vanskeligheder, skal du kontrollere din kode og kredsløbskonfiguration grundigt for fejl, og prøv igen.
Metode 2: GPIO Zero Library
RPi.GPIO-biblioteket er fantastisk, men der er en ny dreng på blokken. GPIO Zero Library blev oprettet af Raspberry Pi community manager Ben Nuttall med det formål at gøre kode enklere og lettere at læse og skrive.
For at teste det nye bibliotek skal du åbne en ny Thonny-fil og importere biblioteket.
from gpiozero import LED, Button from signal import pause
Du vil bemærke, at du ikke importerede hele biblioteket. Da du kun bruger en LED og en knap, kræver du kun disse moduler i scriptet. Vi importerer også Pause fra signalbiblioteket, som er et Python-bibliotek til begivenhedsstyring.
Det er meget nemmere at installere stifterne med GPIO Zero:
led = LED(18) button = Button(23)
Da GPIO Zero-biblioteket har moduler til LED og knap, behøver du ikke at konfigurere indgange og udgange som før. Du vil bemærke, at selvom stifterne ikke har ændret sig, er tallene her forskellige fra oven. Det skyldes, at GPIO Zero kun bruger GPIO-pin-numrene (også kendt som Broadcom- eller BCM-numre).
Resten af scriptet er kun tre linjer:
button.when_pressed = led.on button.when_released = led.off pause()
Pause () -opkaldet her forhindrer simpelthen scriptet i at afslutte, når det når bunden. Begivenheder med to knapper bliver udløst, når knappen trykkes og slippes. Gem og kør dit script, så ser du det samme resultat som før!
To måder at tilføje en knap til Raspberry Pi
Ud af de to måder at indstille knappen på synes GPIO Zero-metoden at være den letteste. Det er stadig værd at lære om RPi.GPIO-biblioteket, da de fleste nybegynder Raspberry Pi-projekter bruger det. Så enkelt som dette projekt er, kan viden bruges til en række ting.
Brug af GPIO-pins er en fantastisk måde at lære og opfinde dine egne enheder på, men det er langt fra alt, hvad du kan gøre med Pi. Vores uofficielle guide til Raspberry Pi Raspberry Pi: Den uofficielle tutorial Raspberry Pi: Den uofficielle tutorial Uanset om du er en nuværende Pi-ejer, der ønsker at lære mere eller en potentiel ejer af denne enhed med kreditkortstørrelse, er dette ikke en guide du vil gå glip af. Read More er fyldt med kreative ideer og tutorials, du kan prøve selv! For en anden tutorial som denne, kan du se, hvordan du opretter en Wi-Fi-tilsluttet knap. Sådan opretter du din egen Wi-Fi-tilsluttede knap med ESP8266 Sådan opretter du din egen Wi-Fi-tilsluttede knap med ESP8266 I denne selvstudie lærer du, hvordan at oprette en Wi-Fi-aktiveret knap ved hjælp af NodeMCU og IFTTT. Læs mere .
Udforsk mere om: DIY-projektvejledninger, GPIO, Python, Raspberry Pi.