Control de circuitos eléctricos con Raspberry Pi – II : Python

En una entrada anterior hemos visto cómo un programa escrito en Python puede controlar dispositivos conectados a la GPIO de la Raspberry Pi (OUT) como era un  LED, pero que se puede generalizar a otros dispositivos de bajo voltaje como un motor de un juguete o de mayor voltaje mediante un relé. Ahora vamos a ver cómo un dispositivo conectado a la GIO de la Raspberry Pi, como es un pulsador, puede controlar un programa Python (IN).

La entrada es flotante, es decir se detecta una variación relativa del  voltaje de entrada por el conector definido como entrada.

Generación de señal de entrada (Diagrama de eLinux)

En nuestro ejemplo hemos usado como entrada el conector 24 (pin 18) y los +3,3V lo tomamos del pin 1

# led_balancin_2.py 
#
# Cuando se pulsa parpadean las luces hasta que se
# vuelve a pulsar
try:
 import RPi.GPIO as GPIO
 print("GPIO.RPI_INFO = " + str(GPIO.RPI_INFO))
 print("GPIO.VERSION = " + str(GPIO.VERSION))
except RuntimeError:
 print("Error importando RPi.GPIO")
 
try: 
 import time
except RuntimeError:
 print("Error importando RPi.GPIO")
 
# GPIO: Ajuste de los nombres de GPIO: BOARD ó BCM
GPIO.setmode(GPIO.BCM)
# GPIO: Ajuste mensajes de warning a OFF
# (avisos de otros programas trabajando con GPIO)
GPIO.setwarnings(False)

# GPIO: Definicion de canales de IN y OUT
Lista_canales_out = [18,23] 
Lista_canales_in = [24] 
GPIO.setup(Lista_canales_out,GPIO.OUT)
GPIO.setup(Lista_canales_in,GPIO.IN)
GPIO.output(Lista_canales_out,(GPIO.LOW,GPIO.LOW))
pulso = 0 
while pulso < 2:
 if (GPIO.input(24)):
 print("Boton!")
 pulso += 1
 else:
 time.sleep(1)
 if pulso == 1:
 print ("Ni")
 GPIO.output(Lista_canales_out,(GPIO.HIGH,GPIO.LOW))
 time.sleep(1)
 print ("No")
 GPIO.output(Lista_canales_out,(GPIO.LOW,GPIO.HIGH))
 time.sleep(1)
 else:
 time.sleep(1)
GPIO.cleanup()

El siguiente reto, la siguiente entrada, cómo usar un dispositivo con BLE (Bluetooth de baja energia) para controlar un programa Python