# 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('Hola, SPick !', 11, 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
red_pin = 2 # Cambia esto al pin GPIO que uses para el rojo
green_pin = 4 # Cambia esto al pin GPIO que uses para el verde
blue_pin = 5 # Cambia esto al pin GPIO que uses para el azul
# Configuración de PWM para controlar la mezcla de los colores
red_pwm = PWM(Pin(red_pin), freq=1000)
green_pwm = PWM(Pin(green_pin), freq=1000)
blue_pwm = PWM(Pin(blue_pin), freq=1000)
def set_rgb(red, green, blue):
"""Establece los colores del LED RGB."""
red_pwm.duty(red)
green_pwm.duty(green)
blue_pwm.duty(blue)
# Ejemplo de uso: encender el LED en diferentes colores
# Rojo
set_rgb(1023, 0, 0)
utime.sleep_ms(2000)
# Verde
set_rgb(0, 1023, 0)
utime.sleep_ms(2000)
# Azul
set_rgb(0, 0, 1023)
utime.sleep_ms(2000)
# Amarillo
set_rgb(1023, 1023, 0)
utime.sleep_ms(2000)
# Morado
set_rgb(1023, 0, 1023)
utime.sleep_ms(2000)
# Cian
set_rgb(0, 1023, 1023)
utime.sleep_ms(2000)
# Blanco
set_rgb(1023, 1023, 1023)
utime.sleep_ms(2000)
# Apagado
set_rgb(0, 0, 0)
utime.sleep_ms(2000)
# 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: ")
print("RGB: Amarillo")
oled.text("Disminuye", 35, 15)
oled.text("Cantidad", 31, 35)
oled.show()
red.value(255)
green.value(255)
blue.value(0)
utime.sleep_ms(200)
oled.fill(0)
oled.show()
red.value(0)
green.value(0)
blue.value(0)
if valory <= 23:
print("Aumenta Cantidad: ")
oled.text("Aumenta", 35, 15)
oled.text("Cantidad", 31, 35)
oled.show()
red.value(0)
green.value(0)
blue.value(255)
utime.sleep_ms(200)
red.value(0)
green.value(0)
blue.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()
red.value(0)
green.value(1)
blue.value(0)
utime.sleep_ms(500)
oled.fill(0)
oled.show()
red.value(0)
green.value(0)
blue.value(0)
utime.sleep_ms(50)