Aveņu PI un GPIO adatas: Kontrolējot LED ar Bash un Python

Ar iepriekšējā amatā mēs redzējām bija GPIO adatas un dažu praktisku pielietojumu piemēri, Šodien mēs koncentrēsies uz vispārējas nozīmes PIN darbība, un iemācīties kontrolēt tos ar tulka pasūtījumiem Bash un ar Python.

proto&veda

Izmantos LED, pretestība 330 Oms, stieples, un viens Breadboard, vai lodēt un lodāmurs.

Mums būs arī mūsu Avenes tenga ya Raspbian sākotnēji instalētas, Ja jūsu gadījumā nav, Jūs varat redzēt, kā tas jādara šādu saiti no Katalogs.

Izjādes iecirkņa

Jūs varat tieši lodēt LED stieples un pretestība, kā jūs redzēsiet šādu diagram, Lai gan tas ir daudz labāk izmantot Breadboard; Tas ir ļoti svarīgi paskatīties arī uz vaigubārda, kā tas ir “pa diagonāli” iekšpusē, diode LED apvienojot divas adatas Mount circuit, jau Ja uzstādāt to atpakaļ neieslēdzas.

Ķēdes ierīce kontrolē, diode LED.

Ķēde, kas vajadzīgi, lai kontrolētu power LED diode.

Es esmu gatavojas izmantot vienu Breadboard, un es iesaku jums izmantot, Ir daži Ir daži un viņi ļaus mums atkal un atkal atkārtoti komponenti bez lodēt tos, iekšējie savienojumi no viena Breadboard tās mēdz būt šādi.

protocon

Breadboard savienojumi.

Savienojumus starp Breadboard un Avenes tiem ir jābūt, kā tas tālāk redzamajā diagrammā, uz GPIO Jūs varat sazināties ar jautājumu 3,3V lai piešķirtu augstā loģiskā vērtība.

Circuito en Protoboard.

Ķēde, kas vajadzīgi, lai kontrolētu power LED diode.

Hallo pasaule GPIO ar Bash

Vienu reizi uzstādīts iecirkņa, Mēs gatavojamies darīt, ko es saucu par “Hallo pasaule GPIO” programmā Bash ejecutando el siguiente skripta.

#!/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

Lai izslēgtu gaismas DIODE, mēs varam darīt ar šo skripta.

#!/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 

Būtībā tas, ko mēs darām ar Bash ir jāizveido Direktoriju hierarhijā programmā /klase/sys/gpio y añadir contenido a cada archivo que será tratado después como una mainīgā.

jerarquia

/Sys/class/gpio direktorija hierarhiju.

Ievads Python

Mums jau ir pierādījuši, ka mūsu ķēdē darbojas pareizi un LED ir tā karsētie dot augstu loģiskā vērtība mainīgajam, Tagad redzēsim, kā mēs varam darīt to pašu Python, Tas ļaus mums plānot mūsu Web lietojumprogrammas lai kontrolētu ieejas un izejas no GPIO no jebkuras ierīces.

funcweb

WEB lietojumprogrammu, izmantojot darbību.

Pirms turpināt, Es iesaku, ka jūs redzēt nodaļas 1 lai 10 no Šis video pamācību no Python kanāls YouTube no Atvieglot koda, Ja kā man nav daudz ideju par programmēšanu Python, os puede venir muy bien para familiarizaros con el código que vamos a ver mas adelante y llegar a entenderlo.

Dažādas GPIO Pinouts (BCM un dēli)

Pastāv divu veidu PIN kodu numerāciju, fizisko numerācija vai režīms VALDE, un numerācija chip SoC Broadcom que los controla, Mēs gatavojamies izmantot pinout režīmā BUSINESS CONTACT MANAGER, bet apskatīsim starpība.

BCMvsBOARD

Hallo pasaule GPIO ar Python

Pēc skatītos video, un citu pinouts jau saprast pamata kodu, lai “Hallo pasaule GPIO” programmā Python.

Vispirms mēs lejupielādēt visu nepieciešamo kontroles GPIO ar Python, programmā Raspbian ya vienen instalados Python un bibliotēkām GPIO, bet mēs gatavojamies papildu iepakojumā instalēt un atjaunināt sistēmu, lai būtu pieejama jaunākā versija.

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

Atjaunināts reizi, Let's redzēt, kā ieslēgt LED ar šādiem skripta, Piemēram var izsaukt enciende.py, y podemos ejecutarlo como root con el comando “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) 

Ar šo mēs to varat izslēgt, piemēram, zvanu 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() 

Un ar šo mēs piezvanīsim jums parpadea.py, Mēs veiksim mirgot 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() 

Ja bibliotēka nevar importēt “laiks“, nevar pievienot “miegs“, un, ja nevar pievienot “miegs” sekundes starp ieslēgšana un izslēgšana, Tas ir pilnīgi iespējams, ne mūsu acu uztversiet ņirbēt.

Tas ir ļoti svarīgi, lai pievienotu speciālās rakstzīmes skripti Python, Šī iemesla dēļ komentāriem nenēsā akcenti, Jo tas deva nederīgu rakstzīmi kļūda.

Ar šādu ierakstu Mēs redzam, kā padarīt vienkāršu Web lietojumprogrammu ļauj mums izpildīt šos skripti, lai varētu vadīt no jebkuras ierīces, izmantojot pārlūkprogrammu Web.

Ja jums patīk jūs varat sekot mani uz Čivināt, Facebook, Google +, LinkedIn, vai dalīties tajā ar pogām zem šīs publikācijas, Ja jums ir kādi jautājumi vai ierosinājumi, lūdzu, nekautrējieties komentēt.

Palīdz mums sasniegt vairāk lasītāju Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 domas par"Aveņu PI un GPIO adatas: Kontrolējot LED ar Bash un Python

  1. tengo una duda de novato
    porque la resistencia de 330 ohmnios y cuando hay que utilizarla?

    Siempre se utilizan de 330 cuando trabajamos con RPI, o puede variar?

    Un saludo y excelente blog!!!

    • Hola Pedro,

      En principio debería funcionar, solo les ha dado error por permisos a algunas personas pero ejecutándose desde la aplicación web, ya que el usuario www-data por defecto no tiene dichos permisos.

      Por si acaso pruebe ejecutandosudo chmod +x script.pypara volverlo ejecutable, aunque sin serlo debería funcionar igual desde terminal; puede enseñarme si le devuelve algún error en la terminal al ejecutar el script¿?

      Muchas gracias por su comentario.

  2. labs, cuando introduzco el script en python, me indica que el arroba es un SyntaxError ¿Qué puede ser? Gracias y saludos.

  3. labdien,
    estoy intentando encender un LED a través de python siguiendo la guía que muestras pero me da el siguiente error cuando ejecuto el código éste:

    importēt kā GPIO RPi.GPIO

    Error:
    -bash: import: no se encontró la orden

    ¿Sabes a qué se debe este error?

    Gracias y enhorabuena por el blog me está sirviendo de mucho!

    • Hola Nano, Paldies par komentāru.

      Parece que el código está siendo interpretado por Bash y no por Python.

      ¿Estás ejecutando el script, o las líneas de código en la terminal directamente?

  4. Buenas de nuevo,
    algo que no entiendo es la primera línea de código: #!usr/bin/env/ python
    ¿para qué sirve?
    veo que funciona igual con o sin ella

    • Hola Nano, bienvenido otra vez.

      La línea que comentas es la declaración que se suele incluir al inicio de un script para indicarle a la terminal donde se encuentra el intérprete al que debe pasarle las órdenes, en este caso Python; para bash sería la siguiente:

      #!/bin/bash

      En este caso funciona con la declaración y sin ella puesto que el archivo tiene extensión .py, pero es una buena práctica añadirla siempre.

      Es ceru, ka jūsu šaubas ir notīrīta, vuelve por aquí cuando quieras y muchas gracias por tu comentario 🙂

  5. paldies, el tutorial esta excelente, pero tengo una duda:

    me salen los siguientes errores:

    linea 12 import:not found
    linea 14 syntax error: word unexpected (expecting “)”)

    Mi codigo es:

    #gpio-setup.py
    ### BEGIN INIT INFO
    # Provides: gpio-setup.ch
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Setup mode gpio
    # Description: Setup gpio 22/27/17/4 mode out
    ### END INIT INFO

    importēt kā GPIO RPi.GPIO
    #Definimos el modo BCM
    GPIO.setmode(GPIO. BUSINESS CONTACT MANAGER)
    #Ahora definimos los pines GPIO como salida
    GPIO.setup(4, GPIO. ĀRĀ)
    GPIO.setup(17, GPIO. ĀRĀ)
    GPIO.setup(27, GPIO. ĀRĀ)
    GPIO.setup(22, GPIO. ĀRĀ)

    Kāda ideja???

    • Hola Leoctam, Paldies par komentāru.

      Las primeras líneas dan a entender que estas intentando crear un demonio del sistema, pero están comentadas por lo que no se tendrán en cuenta.

      no otras puses, el código que estás utilizando para interactuar con los GPIO es Python, por lo que debes alojarlo en un script .py que será invocado desde tu demonio del sistema, o utilizar Bash para ello como en el primer ejemplo de este tutorial.

atstāt atbildi