from machine import Pin, PWM, ADC
import time
# Pines de los LEDs
pinLEDR = 13
pinLEDG = 12
pinLEDB = 14
# Pines de los potenciómetros (entradas analógicas)
pinPotenciometroR = 34
pinPotenciometroG = 35
pinPotenciometroB = 32
# Configuración de las propiedades de PWM
frecuencia = 5000
resolucion = 8 # 8 bits de resolución, de 0 a 255
# Configurar PWM para cada LED
pwmLEDR = PWM(Pin(pinLEDR), freq=frecuencia, duty=0)
pwmLEDG = PWM(Pin(pinLEDG), freq=frecuencia, duty=0)
pwmLEDB = PWM(Pin(pinLEDB), freq=frecuencia, duty=0)
# Configurar ADC para cada potenciómetro
adcPotenciometroR = ADC(Pin(pinPotenciometroR))
adcPotenciometroG = ADC(Pin(pinPotenciometroG))
adcPotenciometroB = ADC(Pin(pinPotenciometroB))
# En ESP32, la lectura ADC puede ser de 0 a 4095
adcPotenciometroR.atten(ADC.ATTN_11DB) # Configurar atenuación para lectura máxima de aproximadamente 3.6V
adcPotenciometroG.atten(ADC.ATTN_11DB)
adcPotenciometroB.atten(ADC.ATTN_11DB)
def map_value(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min
#def mapeo(x):
# Pwm=int(255/4095*x)
# return
while True:
# Leer los valores de los potenciómetros
valorPotenciometroR = adcPotenciometroR.read()
valorPotenciometroG = adcPotenciometroG.read()
valorPotenciometroB = adcPotenciometroB.read()
# Mapear los valores del potenciómetro al ciclo de trabajo PWM
cicloLEDR = map_value(valorPotenciometroR, 0, 4095, 0, 255)
cicloLEDG = map_value(valorPotenciometroG, 0, 4095, 0, 255)
cicloLEDB = map_value(valorPotenciometroB, 0, 4095, 0, 255)
#cicloLEDR = mapeo(valorPotenciometroR)
#cicloLEDG = mapeo(valorPotenciometroG)
#cicloLEDB = mapeo(valorPotenciometroB)
# Aplicar los ciclos de trabajo a los LEDs
pwmLEDR.duty(cicloLEDR)
pwmLEDG.duty(cicloLEDG)
pwmLEDB.duty(cicloLEDB)
time.sleep(0.015) # Pequeña pausa