Me había prometido que este 2013 iba a escribir una entrada mínimo cada mes. Está ya bien entrado el año y de momento sólo hay una. Hoy voy a intentar ponerle remedio presentando un juguete nuevo que tengo desde hace poco más de un año y que entre pitos y flautas, no he podido exprimir todo lo que me gustaría. Estoy hablando de la RaspberryPi.
Hablar de la RaspberryPi daría para muchos blogs. Yo me voy a centrar hoy en hacer una pequeña prueba de lo que es capaz su GPIO (General Purpose Input/Output), http://elinux.org/RPi_Low-level_peripherals.
Resumiendo mucho y salvando las distancias, son 26 pines digitales para conectar cualquier cosa que nos interese. Algo parecido a un Arduino, repito, salvando las distancias. Es muy importante recalcar que son digitales, cosa que me acabo de dar cuenta, así que todos mis planes para conectar algo analógico, de momento, quedan relegados a un segundo plano.
Para programar esto hay una librería hecha en Python, https://pypi.python.org/pypi/RPi.GPIO.
Como prueba de concepto he hecho lo siguiente. Dos botones y dos leds; cuando se pulsa un botón se ilumina su led correspondiente.
El código es el siguiente, es relativamente sencillo y se explica sólo.
import RPi.GPIO as GPIO
GPIO.cleanup()
pinVerdeEntrada = 11
pinVerdeSalida = 12
pinAmarilloEntrada = 15
pinAmarilloSalida = 16
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pinVerdeSalida,GPIO.OUT)
GPIO.setup(pinAmarilloSalida,GPIO.OUT)
GPIO.setup(pinVerdeEntrada,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(pinAmarilloEntrada,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
while True:
GPIO.output( pinAmarilloSalida , GPIO.input(pinAmarilloEntrada) )
GPIO.output( pinVerdeSalida , GPIO.input(pinVerdeEntrada) )
GPIO.cleanup()
Un esquema del circuito, para más claridad, y un vídeo para los más incrédulos.
Como primera prueba de contacto, está bastante bien.