2 måter å legge til en knapp på ditt Raspberry Pi -prosjekt

2 måter å legge til en knapp på ditt Raspberry Pi -prosjekt

Å lære å bruke GPIO -pinnene på Raspberry Pi åpner en hel verden av muligheter. De grunnleggende prinsippene som læres gjennom nybegynnerprosjekter baner vei mot nyttig kunnskap om både DIY -elektronikk og programmering.





Denne opplæringen viser deg to måter å legge til en knapp på Raspberry Pi -prosjektet ditt. Knappen brukes til å styre en LED. Skriftlige instruksjoner er tilgjengelig under videoen.





Du vil trenge

For å komme i gang må du kontrollere at du har følgende komponenter:





  • 1 x Raspberry Pi (Any will do, modell 3B brukes i denne opplæringen)
  • 1 x trykknapp
  • 1 x LED
  • 1 x 220 Ohm motstand (Høyere verdier er fine, LED -en din blir bare svakere)
  • 1 x brødbrett
  • Koble til ledninger

Når du er samlet, bør du ha komponenter som ser omtrent slik ut:

Du trenger også et SD -kort med Raspbian -operativsystemet installert. Den raskeste måten å gjøre dette på er med NOOBS (New Out Of the Box Software) -bildet. Instruksjoner for hvordan du gjør dette er tilgjengelig i denne videoen:



Sette opp kretsen

Du vil bruke GPIO -pinnene til Pi for å lage kretsen, og hvis du ikke er kjent med dem vår guide til Raspberry Pi GPIO -pinner vil hjelpe. Kretsen her er nesten den samme som i vår forrige Raspberry Pi LED -prosjekt , med tillegg av knappen du skal bruke i dag.

Sett opp kretsen din i henhold til dette diagrammet:





  • De 5v og GND pinner kobles til strømskinnene på brødbrettet.
  • Pin 12 (GPIO 18) kobles til det positive beinet på LED -en.
  • Ett ben av motstand festes til det negative benet på LED -en, og det andre benet festes til bakken på brødbrettet.
  • Pin 16 (GPIO 23) festes til den ene siden av knappen, den andre siden festes til bakkeskinnen på brødbrettet.

Når det er konfigurert, ser det slik ut:

Kontroller kretsen din for å kontrollere at den er riktig, og slå deretter på Raspberry Pi.





Metode 1: RPi.GPIO -biblioteket

Når Pi har startet, går du til menyen og velger Programmering> Thonny Python IDE . Et nytt Python -skript åpnes. Hvis du er helt ny i Python, er det et flott språk for nybegynnere, og det er mange flotte steder å lære mer om Python etter at du er ferdig med denne opplæringen!

Start med å importere RPi.GPIO -biblioteket og angi brettmodus.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)

Nå deklarerer du variablene for LED- og knappnålene.

ledPin = 12
buttonPin = 16

Vær oppmerksom på at siden vi har brettmodus satt til BORDE vi bruker pin -tallene i stedet for GPIO -tallene. Hvis det er forvirrende for deg, kan et Raspberry Pi pinout -diagram hjelpe deg med å rydde opp.

Sette opp knappen

Det er på tide å sette opp GPIO -pinnene. Still LED-pinnen til utgang, og knappestiften for inngang med en opptrekkmotstand

GPIO.setup(ledPin, GPIO.OUT)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Teksten etter GPIO.IN refererer til intern pull-up motstand av Raspberry Pi. Du må aktivere dette for å få en ren avlesning fra knappen. Siden knappen går til jordpinnen, trenger vi en opptrekkmotstand for å holde inngangspinnen HØYT til du trykker på den.

La oss se på opptrekk- og nedtrekksmotstander før vi fortsetter.

Pauser: Trekk opp/trekk ned motstander

Når du konfigurerer en GPIO -pin til å skrive inn, leser den den for å bestemme tilstanden. I denne kretsen må du lese om en pin er HØY eller LAV for å utløse LED -lampen når du trykker på knappen. Dette ville være enkelt hvis det var de eneste statene en pin kan ha, men dessverre er det en tredje tilstand: FLYTENDE .

En flytestift har en verdi mellom høy og lav, noe som får inngangen til å virke uforutsigbart. Pull-up/pull-down motstander løser dette.

Bildet ovenfor er et forenklet diagram over en knapp og en Raspberry Pi. GPIO -pinnen kobles til bakken gjennom knappen. Den interne pull-up-motstanden fester GPIO-pinnen til den interne Pi-strømforsyningen. Denne strømmen flyter og pinnen trekkes trygt opp til HIGH.

Når du trykker på knappen, kobles GPIO -pinnen direkte til bakkenålen, og knappen leser lavt.

Nedtrekksmotstander er for når bryteren er koblet til strømnålen. Denne gangen fester den interne motstanden GPIO -pinnen til bakken, og hold inne LOW til du trykker på knappen.

Pull-up og Pull-down motstandsteori er forvirrende ved første øyekast, men viktig kunnskap å ha når du arbeider med mikrokontrollere. For øyeblikket, hvis du ikke helt forstår det, ikke bekymre deg!

La oss fortsette der vi sluttet.

Programsløyfen

Sett deretter opp programsløyfen:

while True:
buttonState = GPIO.input(buttonPin)
if buttonState == False:
GPIO.output(ledPin, GPIO.HIGH)
else:
GPIO.output(ledPin, GPIO.LOW)

De mens det er sant loop kjører koden inne i den til vi avslutter programmet. Hver gang den sløyfer, oppdateres den knappStat ved å lese input fra knappPin . Mens knappen ikke trykkes, forblir den HØY .

Når knappen er trykket, knappStat blir LAV . Dette utløser hvis uttalelse , siden Falsk er det samme som LAV , og LED -en slås på. De ellers setning slår LED -lampen av når buttonPin ikke er False.

Lagre og kjør skriptet ditt

Lagre skriptet ditt ved å klikke Fil> Lagre som og velge et filnavn. Du kan kjøre skissen ved å klikke på den grønne Spille -knappen i Thonny -verktøylinjen.

Trykk nå på knappen, så skal LED -lampen lyse! Trykk på den røde Stoppe når som helst for å stoppe programmet

Hvis du har problemer, må du sjekke koden og kretsoppsettet grundig for feil og prøve igjen.

Metode 2: GPIO Zero Library

RPi.GPIO -biblioteket er fantastisk, men det er en ny gutt på blokken. GPIO Zero Library var laget av Raspberry Pi community manager Ben Nuttall med den hensikt å gjøre koden enklere og lettere å lese og skrive.

For å teste det nye biblioteket, åpne en ny Thonny -fil og importer biblioteket.

from gpiozero import LED, Button
from signal import pause

Du vil legge merke til at du ikke importerte hele biblioteket. Siden du bare bruker en LED og knapp, krever du bare de modulene i skriptet. Vi importerer også Pause fra signalbiblioteket, som er et Python -bibliotek for hendelsesadministrasjon.

Det er mye enklere å sette opp pinnene med GPIO Zero:

led = LED(18)
button = Button(23)

Siden GPIO Zero -biblioteket har moduler for LED og knapp, trenger du ikke å sette opp innganger og utganger som før. Du vil legge merke til at selv om pinnene ikke har endret seg, er tallene her forskjellige fra ovenfor. Det er fordi GPIO Zero bare bruker GPIO -pin -tallene (også kjent som Broadcom- eller BCM -tall).

ekstern harddisk viser ikke pc

Resten av manuset er bare tre linjer:

button.when_pressed = led.on
button.when_released = led.off
pause()

De pause() ring her stopper ganske enkelt skriptet fra å gå ut når det når bunnen. Hendelser med to knapper blir utløst når knappen trykkes og slippes. Lagre og kjør skriptet ditt, så ser du det samme resultatet som før!

To måter å legge til en knapp på Raspberry Pi

Av de to måtene å sette opp knappen, synes GPIO Zero -metoden å være den enkleste. Det er fortsatt verdt å lære om RPi.GPIO -biblioteket som mest nybegynner Raspberry Pi -prosjekter bruk det. Så enkelt som dette prosjektet er, kan kunnskapen brukes til en rekke ting.

Å bruke GPIO -pinnene er en fin måte å lære og finne på egne enheter, men det er langt fra alt du kan gjøre med Pi. Vår uoffisielle guide til Raspberry Pi er full av kreative ideer og opplæringsprogrammer du kan prøve selv! For en annen opplæring som dette, sjekk ut hvordan lage en Wi-Fi-tilkoblet knapp .

Dele Dele kvitring E -post 5 tips for å overbelaste VirtualBox Linux -maskinene dine

Lei av den dårlige ytelsen som tilbys av virtuelle maskiner? Her er hva du bør gjøre for å øke VirtualBox -ytelsen.

Les neste
Relaterte temaer
  • DIY
  • Bringebær Pi
  • Python
  • GPIO
  • DIY -prosjektopplæringer
Om forfatteren Ian Buckley(216 artikler publisert)

Ian Buckley er frilansjournalist, musiker, utøver og videoprodusent bosatt i Berlin, Tyskland. Når han ikke skriver eller står på scenen, pusler han med DIY elektronikk eller kode i håp om å bli en gal forsker.

Mer fra Ian Buckley

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere