#***************************************************************
#* LED INTERMITENTE CON CONTADOR Y PARADA DE EMERGENCIA *
#* UTILIZANDO BUS I2C (PCF8574) Y UN DISPLAY LCD 16 X 2 *
#***************************************************************
from machine import Pin, SoftI2C # Desde el módulo machine importamos la clase Pin
from time import sleep_ms # Desde el módulo time importamos la función sleep_ms
from modulo_lcd import LCD # Desde el módulo "MODULO_LCD" importo la función LCD
#
scl_pin = 22 # Numero de pin de SCL
sda_pin = 21 # Numero de pin de SDA
lcd = LCD(SoftI2C(scl=Pin(scl_pin), sda=Pin(sda_pin), freq=100000)) # Le indico parámetros del bus a la función
#
pin_02 = Pin(2, Pin.OUT, value=0) # Inicializamos el GPIO 02 como salida y lo mantenemos apagado
pin_05 = Pin(5, Pin.IN) # Inicializamos el GPIO 05 como entrada
contador = 0 # Creamos y ponemos a 0 una variable llamada "contador"
#
lcd.puts("Display LCD 16x2") # Texto inicial para el primer renglón
sleep_ms(2000) # 2 segundos
#
while True: # MIENTRAS siempre será TRUE
# Y de esta forma se crea el lazo infinito
print(contador) # Observo el valor que va tomando el contador "al momento de pasar por aquí"
lcd.puts(" CONTADOR BLINK ") # Coloco texto en el Display
lcd.puts(str(contador),1,8) # Escribo en el display el numero de cuenta y los argumentos
# Indicando renglón y posición de inicio si es necesario
#
pin_02.value(not pin_02.value()) # Invierto el estado en que se encontraba de la salida
sleep_ms(200) # 200 milisegundos
#
if pin_05.value() == 0: # Si el pin adquiere un estado bajo provocará un
break # salto del lazo infinito
contador +=1 # Por último añadimos una unidad a la variable "contador".
pin_02.value(0) # Aseguramos que todo apague
print("La parada de emergencia ha sido pulsada") #Le damos un texto industrial a la impresión.
lcd.puts(" EMERGENCIA ",0,0) # Escribimos el texto desado en pantalla (en el renglón 1 y desde la posición 0)
lcd.puts("CUENTA DETENIDA ",1,0) # Indicando los renglones y el punto de inicio del texto