Bringebær PI og GPIO pinner: Kontrollere en LED med Bash og Python

I forrige innlegg vi så var GPIO pinnene og eksempler på praktiske anvendelser, I dag vil vi fokusere på drift av generell pins, og lære å kontrollere dem med tolkens bestillinger Bash og med Python.

proto&ledet

Bruker en LED, en motstand av 330 ohm, wire, og en Brødfjel, eller loddetinn og lodding jern.

Vi må også våre Bringebær allerede Raspbian forhåndsinstallert, Hvis saken ikke, Du kan se hvordan du gjør det i følgende kobling fra den Directory.

Riding krets

Du kan lodde direkte i LED Wire og motstand som du vil se i følgende diagrammet, Selv om det er mye bedre å bruke en Brødfjel; Det er også svært viktig å se på kinnskjegg, som i den “Diagonal” innsiden av den diode LED kombinerer de to pinnene for å montere krets, allerede som hvis du montere den bakover vil ikke slå på.

Krets for å kontrollere tenningen av en LED diode.

Krets for å kontrollere kraften i en LED diode.

Jeg skal bruke en Brødfjel, og jeg anbefaler at du bruker en, Det er noen fra ca €4 og å gjenbruke komponenter igjen og igjen uten å lodde dem, de interne tilkoblingene til en Brødfjel de pleier å være følgende.

protocon

En brødfjel tilkoblinger.

Sammenhengene mellom den Brødfjel og Bringebær de må være i følgende diagram, den GPIO Du kan nå problemet 3,3V tilordne en logisk høy verdi.

Krets på brødfjel.

Krets for å kontrollere kraften i en LED diode.

Hei verden av GPIO med Bash

Når montert krets, Vi skal gjøre det jeg kaller en “Hei verden GPIO” i Bash kjører følgende skriptet.

#!/bin/bash
#Exportamos el puerto GPIO 17 
echo 17 > /sys/class/gpio/export 
#Lo configuramos como salida 
echo out > /sys/class/gpio/gpio17/direction 
#Encendemos el LED asignandole 1 como valor lógico
echo 1 > /sys/class/gpio/gpio17/value

Hvis du vil deaktivere LED, kan vi gjøre det med følgende skriptet.

#!/bin/bash
#Apagamos el LED asignandole 0 como valor lógico
echo 0 > /sys/class/gpio/gpio17/value  
#Eliminamos la entrada del puerto GPIO 17 
echo 17 > /sys/class/gpio/unexport 

Innerst inne hva vi gjør med Bash er å skape en Directory-hierarkiet i /sys/klassen/gpio og legge til innhold til hver fil som behandles som en variabel.

hierarki

Hierarki innenfor mappen /sys/class/gpio.

Introduksjon til Python

Vi har allerede bevist at vår krets fungerer og LED har det vært avfyrt for å gi en logisk høy verdi til variabelen, Nå la oss se hvordan vi kan gjøre det samme i Python, som vil tillate oss å planlegge våre Web-applikasjoner kontrollere innganger og utganger av den GPIO fra enhver enhet.

funcweb

Bruker webprogrammet.

Før du fortsetter, Jeg anbefaler at du ser kapitlene i den 1 til den 10 av Denne videoen opplæringen fra Python kanalen YouTube av Koden lettere, Hvis så jeg ikke har mye ideen om programmering i Python, Det kan komme til deg veldig godt å gjøre deg kjent med koden som vi vil se mer fremover og kommer til å forstå det.

Forskjellige Pinouts av GPIO (BCM og styret)

Det finnes to typer pin nummerering, den fysiske nummerering eller modus STYRET, og nummereringen av chip SoC Broadcom kontrollere dem, Vi skal bruke pinout i modus BCM, men la oss se på forskjellen.

BCMvsBOARD

Hei verden av GPIO med Python

Etter å ha sett videoene, og ulike pinouts kan allerede forstå grunnleggende koden å gjøre det “Hei verden GPIO” i Python.

Først skal vi laste ned alt du trenger å kontrollere den GPIO med Python, i Raspbian de allerede er installert Python og biblioteker GPIO, men vi skal installere en tilleggspakke og oppdatere systemet å har den nyeste versjonen.

usuario@maquina:~$ sudo apt-get install python-dev
usuario@maquina:~$ sudo apt-get install python-rpi.gpio
usuario@maquina:~$ sudo apt-get update && sudo apt-get upgrade

Oppdateres når, La oss se hvordan du slår på den LED med følgende skriptet, Du kan for eksempel kalle enciende.py, og vi kan kjøre den som root med kommandoen “sudo Python enciende.py”.

#!usr/bin/env/ python
#enciende.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico alto para encender el LED
GPIO.output(17, GPIO.HIGH) 

Dette kan vi slå den av, for eksempel apaga.py

#!usr/bin/env/ python
#apaga.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM
GPIO.setmode(GPIO.BCM)  
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico bajo para apagar el LED
GPIO.output(17, GPIO.LOW) 
#Finalmente liberamos todos los pines GPIO, es decir, los desconfiguramos)
GPIO.cleanup() 

Og med dette vi vil ringe deg parpadea.py, Vi vil gjøre blinker på LED.

#!usr/bin/env/ python
#parpadea.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Importamos la libreria time
import time 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Queremos que lo que contenga el for i in range se repita 5 veces
for i in range(0,5): 
        #Asignamos valor logico alto para encenderlo
               GPIO.output(17, GPIO.HIGH) 
        #Esperamos un segundo
               time.sleep(1)
        #Asignamos valor logico bajo para apagarlo
         GPIO.output(17, GPIO.LOW) 
        #Esperamos un segundo
         time.sleep(1) 
#Una vez termina las 5 repeticiones, liberamos el pin GPIO utilizado; en este caso el 17
GPIO.cleanup() 

Hvis du ikke importerer biblioteket “tid“, kan ikke legge til den “søvn“, og hvis ikke legge den “søvn” sekundet mellom på og av, Det er mulig at våre øyne ikke vil oppfatte flimmer.

Det er veldig viktig ikke å legge til spesialtegn i den skript i Python, Derfor kommentarer ikke bære aksenter, Siden det ga tegn feil ugyldig.

I følgende oppføring Vi vil se hvordan å lage en enkel Web-applikasjon tillate oss å utføre disse skript, å kunne kontrollere den fra enhver enhet med nettleser Web.

Hvis du liker du kan følge meg på Twitter, Facebook, Google +, LinkedIn, eller dele det med knappene under denne publikasjonen, Hvis du har spørsmål eller forslag ikke nøl med å kommentere.

Hjelp oss å nå flere lesere Share on LinkedIn
LinkedIn
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on Google+
Google +
Email this to someone
e-post

16 tanker om"Bringebær PI og GPIO pinner: Kontrollere en LED med Bash og Python

  1. Jeg har et spørsmål fra nybegynner…
    fordi motstanden 330 Ohm og når den skal brukes?

    Brukes alltid for 330 Når vi arbeider med RPI, eller den kan variere?

    En hilsen og utmerket blogg!!!

    • Hei Peter,

      I prinsippet skal det fungere, feil har bare gitt tillatelser til noen, men kjører fra webprogrammet, som brukeren har www-data som standard ikke lenger tillatelsene.

      Bare i tilfelle prøve running “sudo chmod + x script.py” å gjøre den kjørbar, Selv om ikke så det burde fungere bare fra terminal; Du kan lære meg hvis returnerer du en feil i terminalen kjøre skriptet??

      Tusen takk for din kommentar.

  2. bra, Når jeg skriver inn skriptet i python, forteller meg at arroba er en SyntaxError det kan? Takk og hilsen.

  3. hallo,
    Jeg prøver å aktivere en LED gjennom python etter guide prøver, men det gir meg følgende feil når jeg kjører kode det:

    importere RPi.GPIO som GPIO

    Feil:
    -bash: importere: bestillingen ble ikke funnet

    Du vet hvorfor feilen?

    Takk og gratulasjoner på bloggen er serverer meg mye!

  4. Godt igjen,
    hva jeg ikke forstår er den første linjen med kode: #!usr/bin/env/python
    hva er det?
    Jeg ser at det fungerer bare med eller uten

    • Hei Nano, Velkommen igjen.

      Linjen du nevner er setningen er ofte inkludert i begynnelsen av et skript for å fortelle terminalen der tolken som bestillinger skal du passere, i dette tilfellet, Python; for bash ville være som følger:

      #!/bin/bash

      I dette tilfellet, fungerer det med erklæringen og uten siden filen har filtypen .py, men det er lurt å alltid legge den.

      Jeg håper å ha ryddet tvil, tilbake her når du vil og tusen takk for din kommentar 🙂

  5. takk, opplæringen er utmerket, men jeg har tvil:

    de la meg med følgende feil:

    linje 12 importere:finner ikke
    linje 14 Syntaksfeil: uventet ord (forventet “)”)

    Min kode:

    #GPIO-setup.py
    ### STARTE INIT INFO
    # Gir: GPIO-setup.ch
    # Kreves-Start: $remote_fs $syslog
    # Kreves-Stop: $remote_fs $syslog
    # Standard-Start: 2 3 4 5
    # Standard-Stop: 0 1 6
    # Sammendrag: Installasjonsprogrammet modus gpio
    # Beskrivelse: Oppsett gpio 22/27/17/4 ut modus
    ### SLUTTEN INIT INFO

    importere RPi.GPIO som GPIO
    #Vi definerer BCM-modus
    GPIO.setmode(GPIO. BCM)
    #Vi definerer nå GPIO produksjonen pinnene
    GPIO.setup(4, GPIO. UT)
    GPIO.setup(17, GPIO. UT)
    GPIO.setup(27, GPIO. UT)
    GPIO.setup(22, GPIO. UT)

    Alle begrep???

    • Hei Leoctam, Takk for kommentar.

      Den første linjene gi for å forstå at du prøver å opprette en system-daemon, men de er kommenterte så det ikke vil bli tatt hensyn.

      på den andre siden, koden som du bruker til å samhandle med GPIO er Python, så du må bo i et skript .py som skal startes fra din system daemonen, eller bruke Bash for å gjøre det første eksemplet i denne opplæringen.

Legg inn en kommentar