# FUNCIONAMIENTO: Accion switch superior---> LED ROJO
# Accion switch ingerior---> LED VERDE
# A- PROGRAMACIÓN SECUENCIAL (ESTRUICTURADA)
"""
from machine import Pin
from time import sleep
# SW-LED SUBIR
switch_subir = Pin(1,Pin.IN,Pin.PULL_UP)
led_subir = Pin(28,Pin.OUT)
# SW-LED BAJAR
switch_bajar = Pin(10,Pin.IN,Pin.PULL_UP)
led_bajar = Pin(27,Pin.OUT)
flg_bajar=0
flg_subir=0
# LOOP
while True:
if switch_subir.value()!=0 and switch_bajar.value()!=0: #los 2 sin accionar
led_subir.value(0)
led_bajar.value(0)
if switch_bajar.value()==0 and switch_subir.value() !=0: # accionado bajar
led_bajar.value(1)
flg_bajar=1 # Para que no se pueda subir si está accionado bajar
led_subir.value(0)
if switch_subir.value()==0 and switch_bajar.value() !=0 and flg_bajar==1: # accionado subir
led_subir.value(1)
led_bajar.value(0)
flg_subir=1 # Para que no se pueda bajar si está accionado subir
else:
led_subir.value(0)
led_bajar.value(0)
sleep(.1)
"""
#********************************************
# B- PROGRAMACIÓN MEDIANTE FUNCIONES
"""
from machine import Pin
from time import sleep
# SW-LED SUBIR
switch_subir = Pin(1,Pin.IN,Pin.PULL_UP)
led_subir = Pin(28,Pin.OUT)
# SW-LED BAJAR
switch_bajar = Pin(10,Pin.IN,Pin.PULL_UP)
led_bajar = Pin(27,Pin.OUT)
#flg_bajar=0
#flg_subir=0
def no_accion():
led_subir.value(0)
led_bajar.value(0)
def bajar():
led_bajar.value(1)
led_subir.value(0)
flg_bajar=1 # Para que no se pueda subir si está accionado bajar
def subir():
led_subir.value(1)
led_bajar.value(0)
flg_subir=1 # Para que no se pueda bajar si está accionado subir
# ppal
while True:
# NO ENCIENDE NINGUNO
if switch_subir.value()!=0 and switch_bajar.value()!=0:
no_accion()
# ENCIENDE EL VERDE
if switch_bajar.value()==0 and switch_subir.value() !=0:
bajar()
# ENCIENDE EL ROJO
if switch_subir.value()==0 and switch_bajar.value() !=0 :
subir()
else: # <----- Los 2 accionados no deben encenderse los LEDS
no_accion()
sleep(.1)
"""
#********************************************
#C- PROGRAMACIÓN MEDIANTE POO
from machine import Pin
from time import sleep
class Porton:
def __init__(self, switch_subir,led_subir,switch_bajar,led_bajar,flg_bajar,flg_subir):
self.switch_subir=Pin(switch_subir,Pin.IN,Pin.PULL_UP)
self.led_subir= Pin(led_subir,Pin.OUT)
self.switch_bajar=Pin(switch_bajar,Pin.IN,Pin.PULL_UP)
self.led_bajar=Pin(led_bajar,Pin.OUT)
def no_accion(self):
self.led_subir.value(0)
self.led_bajar.value(0)
def bajar(self):
self.led_bajar.value(1)
self.led_subir.value(0)
self.flg_bajar=1 # Para que no se pueda subir si está accionado bajar
def subir(self):
self.led_subir.value(1)
self.led_bajar.value(0)
self.flg_subir=1 # Para que no se pueda bajar si está accionado subir
def accionamiento(self):
while True:
# NO ENCIENDE NINGUNO
if self.switch_subir.value()!=0 and self.switch_bajar.value()!=0:
self.no_accion()
# ENCIENDE EL VERDE
if self.switch_bajar.value()==0 and self.switch_subir.value() !=0:
self.bajar()
# ENCIENDE EL ROJO
if self.switch_subir.value()==0 and self.switch_bajar.value() !=0 :
self.subir()
else:
self.no_accion()
sleep(.1)
# DEFINICIÓN DE LOS PINES
switch_subir=1
switch_bajar=10
led_subir= 28
led_bajar=27
flg_bajar=0
flg_subir=0
# Crear instancia de la clase Porton
elementos = Porton(switch_subir,led_subir,switch_bajar,led_bajar,flg_bajar,flg_subir)
elementos.accionamiento()
#*************************************************************