# ------------------------------------------------
# E048_FOTO_RESISTOR.PY Gestiona un foto resistor y cambia estado LED
# ENTRADAS: Activación foto interruptor en GPIO34
# SALIDAS: LED rojo GPIO26 y LED verde GPIO27
#-------------------------------------------------
from machine import Pin # Gestiona GPIO
import time # Gestiona tiempos
foto_pin = 34 # Foto interruptor
r_pin = 26 # LED rojo
g_pin = 27 # LED verde
pines = (r_pin, g_pin) # Lista de pines
estado = False # Estado del flip-flop (bandera) activado/desactivado
# Configura los GPIO LED como salidas y foto interruptor como entrada
def setup():
for pin in pines: # Activa LED como salida y los apaga
pin_obj = Pin(pin, Pin.OUT)
pin_obj.off() # Apaga los LED
foto = Pin(foto_pin, Pin.IN, Pin.PULL_UP) # Foto interruptor con pull-up
return foto
# Cambia estado de los LED basado en el estado del foto interruptor
def mira(foto):
global estado
estado = foto.value() # Obtiene el valor del foto interruptor
LED(estado)
# Cambia estado de los LED
def LED(x):
if x:
Pin(r_pin).on() # Enciende LED rojo
Pin(g_pin).off() # Apaga LED verde
print('Rojo...')
else:
Pin(r_pin).off() # Apaga LED rojo
Pin(g_pin).on() # Enciende LED verde
print('Verde...')
# Detiene el script
def parar():
for pin in pines: # Apaga lista de LED
pin_obj = Pin(pin, Pin.OUT)
pin_obj.off()
print('Programa finalizado...')
# Cuerpo principal del script
if __name__ == '__main__':
print('\n' * 50) # Borra pantalla
print('ACTIVACIÓN LED POR FOTO INTERRUPTOR')
print('Interrumpe luz emisor-receptor')
foto = setup() # Inicia los GPIO y obtiene el objeto Pin del foto interruptor
try:
while True:
mira(foto) # Consulta el estado del foto interruptor
time.sleep(0.05) # Este bucle simula el programa principal
except KeyboardInterrupt:
parar() # Finaliza script