Yr Arolygiaeth Gynllunio PI mafon a GPIO: Rheoli LED â lladd a Python

Yn y post blaenorol a gwelsom oedd GPIO pins a rhai enghreifftiau o gymwysiadau ymarferol, Heddiw byddwn yn canolbwyntio ar weithredu'r Arolygiaeth Gynllunio gyffredinol, ac yn dysgu eu rheoli â Gorchmynion y cyfieithydd Darllen difyr a gyda Python.

proto&dan arweiniad

Bydd yn defnyddio DAN ARWEINIAD, ymwrthedd o 330 ohm, Wire, ac un Breadboard, neu sodr a haearn soldering.

Bydd angen inni hefyd ein Mafon tenga ya Raspbian cyn gosod, Os nad yw eich achos yn, Gallwch weld sut i wneud hynny linc canlynol gan y Cyfeiriadur.

Marchogaeth y cylched

Gall eich sodro uniongyrchol y DAN ARWEINIAD Bydd Wire ac ymwrthedd fel yr ydych yn gweld yn y canlynol Diagram, Er ei bod yn llawer gwell i ddefnyddio Breadboard; Mae hefyd yn bwysig iawn i edrych yn dda ar croen pen, fel yn y “Tîm Toriad Croesgornel” o fewn y deuod DAN ARWEINIAD cyfuno pins dau i mount y cylched, eisoes hynny os mae eich mount yn ôl nid Trof.

Circuito necesario para controlar el encendido de un diodo LED.

Cylchdaith sydd eu hangen i reoli pŵer deuod LED.

Yr wyf yn bwriadu defnyddio un Breadboard, ac argymhellaf eich bod yn defnyddio, Ceir rhai o tua €4 ac maent yn caniatáu inni ailddefnyddio cydrannau drosodd a throsodd heb orfod eu sodro, cysylltiadau mewnol o un Breadboard maent yn tueddu i fod yn y canlynol.

protocon

Cysylltiadau Breadboard.

Y cysylltiadau rhwng y Breadboard ac yn y Mafon Rhaid iddynt fod fel yn y diagram canlynol, y GPIO Gallwch gyrraedd y mater 3,3V i neilltuo gwerth uchel rhesymegol.

Circuito en Protoboard.

Cylchdaith sydd eu hangen i reoli pŵer deuod LED.

Helo byd o GPIO â lladd

Cylchdaith unwaith ar geffylau, Yr ydym yn mynd i wneud yr hyn a alwaf “Helo byd GPIO” yn Darllen difyr ejecutando el siguiente SGRIPT.

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

I ddiffodd y LED, gallwn wneud hynny gyda'r canlynol SGRIPT.

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

Yn y bôn beth ydym yn ei wneud gyda Darllen difyr yw creu Hierarchaeth cyfeiriadur yn /buddsoddiadau'r/dosbarth/gpio y añadir contenido a cada archivo que será tratado después como una newidyn.

jerarquia

Hierarchaeth o fewn y cyfeiriadur /sys/class/gpio.

Cyflwyniad i Python

Yr ydym eisoes wedi profi bod ein Cylchdaith yn gweithio'n gywir ac yn y DAN ARWEINIAD wedi ei ennyn i roi gwerth uchel rhesymegol i y newidyn, Nawr Gadewch i ni weld sut y gallwn wneud yr un peth Python, Bydd hynny'n caniatáu inni i drefnu ein ceisiadau we Rheoli mewnbynnau ac allbynnau y GPIO o unrhyw ddyfais.

funcweb

Gweithredu gan ddefnyddio cais gwe.

Cyn bwrw ymlaen, Argymhellaf eich bod yn gweld y penodau o y 1 i y 10 o Tiwtorialau fideo hwn o Python y sianel o YouTube o Cod a hwyluso, Os fel nad oes fawr o syniad o raglennu yn Python, os puede venir muy bien para familiarizaros con el código que vamos a ver mas adelante y llegar a entenderlo.

Gwahanol Pinouts o GPIO y (Rheoli parhad busnes a Bwrdd)

Ceir dau fath o rhifau pin, rhifau'r corfforol neu modd BWRDD, a rhifau y sglodion SoC Broadcom que los controla, Byddwn yn defnyddio y pinout yn y modd RHEOLI PARHAD BUSNES, ond gadewch i ni edrych ar y gwahaniaeth.

BCMvsBOARD

Helo byd o GPIO â Python

Ar ôl gwylio fideos, a gall pinouts gwahanol eisoes yn deall y Cod sylfaenol i wneud y “Helo byd GPIO” yn Python.

Gyntaf ydym yn mynd i lawrlwytho popeth mae angen i reolaeth y GPIO gyda Python, yn Raspbian ya vienen instalados Python a llyfrgelloedd GPIO, ond yr ydym yn mynd i osod pecyn ychwanegol a diweddaru y system i gael y fersiwn diweddaraf.

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

Diweddaru unwaith, Gadewch i ni weld sut i droi y DAN ARWEINIAD y canlynol SGRIPT, Er enghraifft gallwch ffonio 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) 

Gyda hyn gallwn droi ei, Er enghraifft yn galw 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() 

A gyda hyn bydd yn galw chi parpadea.PY, Byddwn yn gwneud yn fflachio y DAN ARWEINIAD.

#!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() 

Os ydych chi ddim mewngludo'r y Llyfrgell “amser“, Gellir ychwanegu nad y “cysgu“, ac, os nad yn ychwanegu y “cysgu” o ail rhwng ar ac oddi ar, Mae'n eithaf posibl y bydd ein llygaid yn gweld cysgodion symudol.

Mae'n bwysig iawn peidio ag ychwanegu cymeriadau arbennig yn y sgriptiau mewn Python, am y rheswm hwn y sylwadau Peidiwch â acenion, Ers ei fod yn rhoi cymeriad gwall annilys.

Yn y cofnod canlynol Byddwn yn gweld sut i wneud syml Cais gwe yn ein galluogi i gyflawni hyn sgriptiau, i allu ei rheoli gan unrhyw ddyfais gyda'r porwr We.

Os hoffech chi ddilyn mi Twitter, Facebook, Google +, LinkedIn, neu rannu gyda botymau dan y cyhoeddiad hwn, Os oes gennych unrhyw gwestiynau neu awgrymiadau croeso i sylwadau.

Yn ein helpu i gyrraedd mwy o ddarllenwyr Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 meddyliau ar"Yr Arolygiaeth Gynllunio PI mafon a GPIO: Rheoli LED â lladd a 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. Helo,
    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:

    Mewngludo RPi.GPIO fel GPIO

    Error:
    -darllen difyr: 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, gracias por comentar.

      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?

      • Hmm lo estaba ejecutando desde el terminalerror gordo jeje (soy nuevo con la raspberry me lo puedo permitir todavía =P )

        • Me alegro de que se haya solucionado!!!

          Diolch am roi sylwadau, no dudes en hacerlo si tienes cualquier duda; entre los lectores y yo te echaremos una mano.

  3. 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.

      Espero haber despejado tus dudas, vuelve por aquí cuando quieras y muchas gracias por tu comentario 🙂

  4. diolch, 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

    Mewngludo RPi.GPIO fel GPIO
    #Definimos el modo BCM
    GPIO.setmode(GPIO. RHEOLI PARHAD BUSNES)
    #Ahora definimos los pines GPIO como salida
    GPIO.setup(4, GPIO. ALLAN)
    GPIO.setup(17, GPIO. ALLAN)
    GPIO.setup(27, GPIO. ALLAN)
    GPIO.setup(22, GPIO. ALLAN)

    Alguna idea???

    • Hola Leoctam, gracias por comentar.

      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.

      ar y llaw arall, 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.

Gadael Ymateb