#------------------------------ [IMPORT]------------------------------------
import network,time,random,machine
from machine import Pin,Timer as ADC, Pin
from umqtt.simple import MQTTClient
#--------------------------- [OBJETOS]---------------------------------------
joystick_x_pin = machine.ADC(machine.Pin(35))
joystick_y_pin = machine.ADC(machine.Pin(34))
#calibracion joystick
joystick_x_pin.atten(machine.ADC.ATTN_11DB)
joystick_y_pin.atten(machine.ADC.ATTN_11DB)
joystick_x_pin.width(machine.ADC.WIDTH_10BIT)
joystick_y_pin.width(machine.ADC.WIDTH_10BIT)
# MQTT Server Parameters
MQTT_CLIENT_ID = "estacion-temp-kjsvbshk_envia"
MQTT_BROKER = "broker.hivemq.com"
MQTT_USER = ""
MQTT_PASSWORD = ""
topic_sub = 'servotopic/umb'
topic_pub = 'servotopic/umb'
#----------------------[ CONECTAR WIFI ]---------------------------------------------------------#
print("Conectando al WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
#----------------------[ FUNCION ENVIO AL SUB ]---------------------------------------------------------#
def send_message(message):
client.publish(MQTT_TOPIC, message)
#----------------------[ FUNCION RECEPCION EN EL SUB ]---------------------------------------------------------#
def sub_cb(topic, msg):
print("Mensaje recibido: " + msg.decode('utf-8'))
#----------------------[ CONECTAR BROKER ]---------------------------------------------------------#
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
client.set_callback(sub_cb)
client.connect()
client.subscribe(topic_sub)
print('Connected to %s MQTT broker, subscribed to %s topic' % (MQTT_BROKER, topic_sub))
print("Connected!")
prev_weather = ""
#----------------------[ TIMER INTERUPCION ]---------------------------------------------------------#
while True:
joy_x_val = joystick_x_pin.read()
joy_y_val = joystick_y_pin.read()
#print("Eje X: {}".format(joy_x_val))
#print("Eje Y: {}".format(joy_y_val))
#client.publish(topic_pub, "Eje X: {} Eje Y: {}".format(int(joy_x_val), int(joy_y_val)))
# print (x,y)
if joy_x_val>3600:
if joy_y_val>3600:
print("diagonal izquierda arriba")
oled.text("UP", 56,12,0)
oled.text("izq.", 10,28,0)
elif joy_y_val<150:
print("diagonal izquierda abajo")
oled.text("Down", 48,44,0)
oled.text("izq.", 10,28,0)
else:
print ("izquierda")
oled.text("izq.", 10,28,0)
elif joy_x_val<150:
if joy_y_val>3600:
print("diagonal derecha arriba")
oled.text("UP", 56,12,0)
oled.text("Der.", 84,28,0)
elif joy_y_val<150:
print("diagonal derecha abajo")
oled.text("Down", 48,44,0)
oled.text("Der.", 84,28,0)
else:
print ("derecha")
oled.text("Der.", 84,28,0)
else:
if joy_y_val>3600:
print("arriba")
oled.text("UP", 56,12,0)
elif joy_y_val<150:
print("abajo")
oled.text("Down", 48,44,0)
time.sleep(1.5)
while True:
print ("esperando")
client.wait_msg()