Python: GPIO LED

Python RASPBERRY PI: GPIO LED

Python

GPIO prender y apagar un led en Python.

El tutorial asume que la tarjeta Raspberry Pi ya se encuentra configurada con el sistema operativo RASPBIAN. Si todavía no está instalado aquí lo pueden descargar y también pueden encontrar una guía de como grabar una imagen en la memoria SD con diferentes sistemas operativos.

01

http://www.raspberrypi.org/downloads/

 Dado que este tutorial está enfocado más al control del hardware externo de la Raspberry Pi a través de los pines es necesario instalar la biblioteca para controlar el GPIO. Para instalar la biblioteca del GPIO de Python es necesario introducir en la terminal las siguientes instrucciones.

 

sudo apt-get update
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio

 

En la última distribución de Raspbian ya se pueden descargar de manera directa desde los repositorios las bibliotecas para el GPIO, es por esto que se comienza con la actualización. Una vez instalada la biblioteca ya podemos hacer uso de la misma para scripts en Python.

Para comenzar con un script vamos a escribir en la terminal:

 

Sudo idle

Se abrirá una pestaña de IDLE para scripts en Python, damos clic en nuevo y es ahí donde podemos comenzar a escribir nuestro script.

Algunas de las instrucciones como se vera a continuación tienen un gran parecido con las que se realizan en el Arduino para poder controlar o configurar los pines del mismo.

import RPi.GPIO as GPIO

Importa la biblioteca para poder hacer uso del GPIO, esta instrucción siempre tiene que ir al inicio de nuestro script si haremos uso del GPIO.

<pre>GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)

Una vez importada la biblioteca, el siguiente paso es seleccionar el tipo de etiquetas que llevaran los pines, en este caso tenemos la opción “BOARD” la cual asigna las etiquetas correspondientes a la numeración de los pines según el conector, siendo del 1 al 26, y la opción “BCM” que es la que personalmente prefiero es la etiqueta del pin del procesador de la tarjeta, esta suele tener los nombres como, 5V, 3.3V, GND, GPIO14 UART0_TXD, GPIO1 I2C0_SDA, etc… El inconventiente del BCM es que las etiquetas ya han cambiado para la revisión B de la tarjeta. Es por eso que se recomienda tener siempre a la mano una hoja impresa con el nombre de los pines de la tarjeta que tienes.

Para configurar si el pin será entrada o salida se hace con las siguientes instrucciones.

GPIO.setup(17, GPIO.IN)
GPIO.setup(18, GPIO.OUT)

En este caso se selecciona el pin 11 o el GPIO17 como entrada y el pin 12 p GPIO18 como salida. Aunque el ejemplo de prender y apagar un LED no considera la lectura de entradas digitales a través de los pines o GPIO de la tarjeta, considero importante ponerlo de una vez.

input_value = GPIO.input(17)

Con esto se lee un valor alto o bajo del pin de la tarjeta en el pin 11 o GPIO17.

Para activar o desactivar el LED es necesario indicarle al GPIO que se vaya a un nivel alto de energía (3.3V), para hacer esto, se usara la siguiente instrucción:

GPIO.output(18, GPIO.HIGH)

Con esto activaremos el GPIO correspondiente. Esto significa que el pin físico de la tarjeta estará a 3.3V respecto al pin de GND.

Por ultimo lo que necesitamos para prender y apagar el LED son los retardos, ya que si no ponemos retardos, no podríamos apreciar el LED que se prende y se apaga, esto debido a la velocidad con lo que lo haría la tarjeta. Es por esto que vamos a poner un retardo de por lo menos 50 ms, en este caso 1s.

 

time.sleep(1)

La instrucción nos indica que la Raspbery esperara 1000 milisegundos para poder continuar con la siguiente instrucción.

Para poder hacer uso de la función sleep es necesario haber importado además otra biblioteca, la cual contiene entre otras instrucciones las de retardo.

 

<pre>import time

 

Ya con las instrucciones previamente descritas, es posible realizar un scipt para comenzar a probar nuestra Raspberry Pi. El script que se encuentra a continuación sirve para activar y desactivar un LED con un periodo de 200 ms (100 ms prendido y 100 ms apagado).

 

<pre>import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)

while True:
 GPIO.output(17, True)
 time.sleep(1)
 GPIO.output(17, False)
 time. sleep

 

Si se quisiera cambiar el código para usar los pines como su numeración y que ejecute la misma rutina en el mismo pin seria:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11,GPIO.OUT)

while True:
 GPIO.output(11, True)
 time.sleep(1)
 GPIO.output(11, False)
 time. sleep

 

 

Python

 

Python

 

Para este tutorial se usó la tarjeta PiDuino HeTPro la cual convierte todos los niveles de voltajes de entradas y/o salidas en 5V/3.3V de manera bidireccional. Por lo que se puede hacer uso de una gran cantidad de arduino shields que ya se tengan a la mano. Cabe señalar que en esta tarjeta el pin 11 o el GPIO17 se encuentran ubicados en la salida D7.

——

META: Python Raspberry PI GPIO LED PiDuino

6 Comments

  1. Manuel }saray agosto 27, 2014
    • Hector Torres agosto 27, 2014
  2. Maximo mayo 29, 2015
    • Hector Torres mayo 29, 2015
  3. Esteban diciembre 5, 2016
    • Saul Jesus diciembre 5, 2016

Leave a Reply