#Importaciones
import machine
from machine import Pin
import network
import time
from umqtt.simple import MQTTClient
from hcsr04 import HCSR04
# Leds
ledR = Pin(12, Pin.OUT)
ledB = Pin(14, Pin.OUT)
ledG = Pin(27, Pin.OUT)
# boton
button = Pin(15, Pin.IN)
# Ultrasonido
ultrasonic = HCSR04(trigger_pin=5, echo_pin=18)
distance = 0
b = 0
#Configuracion de entorno de red
#Defino parametros wifi
ssid = 'Wokwi-GUEST'
wifipassword = ''
sta_if = network.WLAN (network.STA_IF)
sta_if.active(True)
# ----
#Conexion a internet
sta_if.connect (ssid, wifipassword)
print ("Conectando")
while not sta_if.isconnected():
print (".", end="")
time.sleep(0.1)
print ("")
print ("Conectado a Internet")
# ----
#Conexion al Tópico
mqtt_server = "io.adafruit.com"
port = 1883
user = "PedroSat"
password = "aio_oDAe52s26mCZWJ5ZJQCCY1xtxDrb"
client_id_gauge = "Identificador"
topico_lectura = "PedroSat/feeds/Ej-2"
# ----
#Conexion Broker
try:
conexionMQTT = MQTTClient(client_id_gauge, mqtt_server, user = user, password = password, port = int(port))
conexionMQTT.connect()
print ("Conectado al Broker MQTT")
except OSError as e:
print ("Fallo al conectar al Broker, reiniciando...")
time.sleep(5)
machine.reset()
# ----
#Funciones
def distancia(msg):
try:
if b == 0:
conexionMQTT.publish (topico_lectura,str(msg))
print (f'La distancia es: {msg}')
else:
conexionMQTT.publish (topico_lectura,str("Programa interrumpido por el usuario"))
except OSError as e:
print ("Error", e)
time.sleep(5)
machine.reset()
# ----
while True:
# Medida de distancia del ultrasonido
distance = ultrasonic.distance_cm()
distancia(distance)
time.sleep(0.5)
a = button.value()
if a == 0:
if b == 0:
b = 1
else:
b = 0
distancia(distance)
if b == 0:
# Funciones activadas
if distance < 10:
ledG.value(0)
ledB.value(0)
ledR.value(0)
elif distance < 20:
ledG.value (1)
ledR.value (0)
ledB.value (0)
elif distance < 30:
ledG.value (1)
ledR.value (0)
ledB.value (1)
elif distance < 40:
ledB.value (1)
ledG.value (1)
ledR.value (1)
elif b == 1:
# Funciones interrumpidas
ledG.value(0)
ledB.value(0)
ledR.value(0)
time.sleep(0.3)
ledG.value(1)
ledR.value(1)
ledB.value(1)
time.sleep(0.3)
time.sleep(0.5)