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:

Dele nødvendigt til Pi-knapvejledning

Du har også brug for et SD-kort med Raspbian-operativsystemet installeret. Den hurtigste måde at gøre dette på er med NOOBS (New Out Of the Box Software) billedet. Instruktioner til, hvordan man gør dette, findes i denne video:

Opsætning af kredsløbet

Du bruger PIO's GPIO-stifter til at gøre kredsløbet, og hvis du ikke kender dem, er vores

instagram viewer
guide til Raspberry Pi GPIO-pins vil hjælpe. 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:

Fritzing-diagram til Pi-knapvejledning
  • Det 5v og GND stifter tilsluttes strømskinnerne på brødbrættet.
  • Pin 12 (GPIO 18) forbindes til den positive ben af ​​LED.
  • Et ben af modstand 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 den er konfigureret, så skal den se ud:

Raspberry Pi tilsluttes en knap og LED på en brødbræt.

Kontroller dit kredsløb for at sikre dig, at det er korrekt, og tænd derefter din Raspberry Pi.

Metode 1: RPi. GPIO-bibliotek

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 der mange gode steder at lære mere om Python når du er færdig med denne tutorial!

Thonny Python IDE

Start med at importere RPi. GPIO-bibliotek, og indstilling af tavletilstand.

importer RPi. GPIO som GPIO GPIO.setmode (GPIO.BOARD)

Angiv nu variablerne for LED- og knapnålnumrene.

ledPin = 12. buttonPin = 16. 

Bemærk, at da vi har brættetilstand indstillet til BESTYRELSE vi bruger 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.

Min Pi Pinout

Opsætning af knappen

Det er tid til at indstille GPIO-nålene. Indstil LED-stiften til udgang, og knapstiften skal indtastes 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 intern pull-up modstand af 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.

Lad os se på pull-up og pull-down modstande, før vi fortsætter.

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 stater, en pin kan have, men desværre er der en tredje tilstand: FLYDENDE.

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.

Eksempel på optagelsesmodstand

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.

Eksempel på nedtrekksmodstand modstand

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:

mens sandt: buttonState = GPIO.input (buttonPin) hvis buttonState == Falsk: GPIO.output (ledPin, GPIO.HIGH) andet: GPIO.output (ledPin, GPIO.LOW)

Det mens sandt loop kører løbende koden inde i den, indtil vi afslutter programmet. Hver gang den sløjfer, opdaterer den buttonState ved at læse input fra buttonPin. Mens der ikke trykkes på knappen, forbliver den HØJ.

Når der trykkes på knappen, buttonState bliver til LAV. Dette udløser hvis erklæringsiden Falsk er det samme som LAV, og LED'en tændes. Det andet erklæring slukker lysdioden, når knapspinden ikke er falsk.

Gem og kør dit script

Gem dit script ved at klikke på Fil> Gem som og vælge et filnavn. Du kan køre skitsen ved at klikke på det grønne Spil -knappen i Thonny-værktøjslinjen.

Thonny Kontrolpanel

Tryk nu på knappen, og din LED skal lyse! Tryk på det røde Hold op til enhver tid for at stoppe programmet

Tryk på knappen Test Gif

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-bibliotek er fantastisk, men der er et nyt barn på blokken. GPIO-nulbiblioteket var 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.

fra gpiozero import LED, knap. fra signalimportpause. 

Du vil bemærke, at du ikke importerede hele biblioteket. Da du kun bruger en LED og en knap, behøver du kun disse moduler i scriptet. Vi importerer også Pause fra signalbiblioteket, som er et Python-bibliotek til begivenhedsstyring.

Det er meget lettere at sætte stifterne op med GPIO Zero:

led = LED (18) knap = knap (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 ()

Det pause() opkald her forhindrer simpelthen scriptet i at afslutte, når det når bunden. Begivenheder med to knapper udløses, 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-bibliotek som mest nybegynder Raspberry Pi-projekter brug 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 uofficiel guide til Raspberry Pi Raspberry Pi: Den uofficielle tutorialUanset om du er en nuværende Pi-ejer, der vil lære mere eller en potentiel ejer af denne enhed med kreditkortstørrelse, er dette ikke en guide, du vil gå glip af. Læs mere er fuld af kreative ideer og selvstudier, du kan prøve selv! For en anden tutorial som denne, tjek hvordan man opretter en Wi-Fi-tilsluttet knap Sådan opretter du din egen Wi-Fi-tilsluttede knap med ESP8266I denne tutorial lærer du, hvordan du opretter en Wi-Fi-aktiveret knap vha. NodeMCU og IFTTT. Læs mere .

Ian Buckley er freelance journalist, musiker, kunstner og videoproducent bosiddende i Berlin, Tyskland. Når han ikke skriver eller er på scenen, tænker han med DIY-elektronik eller kode i håbet om at blive en gal videnskabsmand.