# Programa para experimentar el uso del JoyStick KN-023 y 5 leds
# Módulos a trabajar
from machine import Pin, I2C
import ssd1306
from machine import Pin, ADC #, PWM
import utime
from time import sleep
# -------PANTALLA OLED ---------
# ESP32 Pin assignment
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
oled.text('Hello, SPick !', 10, 25)
oled.show()
utime.sleep_ms(3000)
oled.fill(0)
oled.show()
# -------PANTALLA JOYSTICK Y LEDS ---------
# Definición de pines del ESP32 para las señales de entrada
sw = ADC(Pin(34)) # Pulsador digital
vrx = ADC(Pin(35)) # Señal analógica en x
vry = ADC(Pin(33)) # Señal analógica en y
# Definición de pines del ESP32
pinLedRojo = 5
pinLedVerde = 4
pinLedAzul = 23
pinLedMorado = 22
pinLedAmarillo = 2
pinBuzzer = 15
# Definición de pines del ESP32 para las señales de salida a leds
LedCentroVerde = Pin(pinLedVerde, Pin.OUT)
LedDerechaAzul = Pin(pinLedAzul, Pin.OUT)
LedArribaMorado = Pin(pinLedMorado, Pin.OUT)
LedIzquierdaAmarillo = Pin(pinLedAmarillo, Pin.OUT)
LedAbajoRojo = Pin(pinLedRojo, Pin.OUT)
Buzzer = Pin(pinBuzzer,Pin.OUT)
# Apaga todos los leds
LedCentroVerde.value(0)
LedDerechaAzul.value(0)
LedArribaMorado.value(0)
LedIzquierdaAmarillo.value(0)
LedAbajoRojo.value(0)
# Atenuación del voltaje de la ESP32 a 3.3V
vrx.atten(ADC.ATTN_11DB);
vry.atten(ADC.ATTN_11DB);
# Resolución a 1024
vrx.width(ADC.WIDTH_10BIT)
vry.width(ADC.WIDTH_10BIT)
# Ciclo de operación
while True:
valorx = vrx.read() # Lee el valor en x de 0 a 1023
valory = vry.read() # Lee el valor en y de 0 a 1023
valorsw = sw.read() # Lee el valor del pulsador digital
if valory >= 1000:
print("Disminuye Cantidad: ")
oled.text("Disminuye", 35, 15)
oled.text("Cantidad", 31, 35)
oled.show()
LedIzquierdaAmarillo.value(1)
utime.sleep_ms(200)
oled.fill(0)
oled.show()
LedIzquierdaAmarillo.value(0)
if valory <= 23:
print("Aumenta Cantidad: ")
oled.text("Aumenta", 35, 15)
oled.text("Cantidad", 31, 35)
oled.show()
LedDerechaAzul.value(1)
utime.sleep_ms(200)
LedDerechaAzul.value(0)
oled.fill(0)
oled.show()
if valorx <= 23:
print("Solicita Reabasto: ")
oled.text("Solicita", 35, 15)
oled.text("Reabasto", 31, 35)
oled.show()
LedArribaMorado.value(1)
utime.sleep_ms(200)
LedArribaMorado.value(0)
oled.fill(0)
oled.show()
if valorx >= 1000:
print("Surtido Nulo: ")
oled.text("Surtido Nulo", 15, 25)
oled.show()
LedAbajoRojo.value(1)
utime.sleep_ms(200)
LedAbajoRojo.value(0)
oled.fill(0)
oled.show()
if valorsw == 0:
print("Surtido Completo: ")
oled.text("Surtido", 35, 15)
oled.text("Completo", 31, 35)
oled.show()
LedCentroVerde.value(1)
Buzzer.value(1)
utime.sleep_ms(500)
oled.fill(0)
oled.show()
LedCentroVerde.value(0)
Buzzer.value(0)
utime.sleep_ms(50)