############################
# E013_DAC.PY: Cambia lumiosidad de LED usando un DAC
# ENTRADAS: Tensión máxima, mínima y paso incremento/decremento
# SALIDAS: Tension que varia iluminación de un LED en GPIO25
############################
import time
from machine import Pin, DAC
# Configuración del GPIO25 DAC en el ESP32©
dac_pin = Pin(25)
dac = DAC(dac_pin)
print('Genera una señal analógica en GPIO25')
inicio = 1500 # Tensión mínima (mV) para disparar el LED
fin = 3300 # Tensión máxima (mV)
paso = 100 # Paso entre cambios de voltaje
tiempo = .2 # Pausa entre valores, cambiar si necesario
# Genera secuencia de valores de tensión en el GPIO25
while True:
# Por ejemplo una secuencia de subida
for luz in range(inicio, fin, paso): #mínimo, máximo, incremento
# Nivel de voltaje deseado en mV
print(luz)
nivel_voltaje_mV = luz
# Convertir el valor del voltaje al rango admitido por el DAC (0-255)
valor_dac = int(nivel_voltaje_mV / 3300 * 255)
# Establecer el nivel de voltaje
dac.write(valor_dac)
# Esperar [tiempo] en segundos antes de la siguiente iteración
time.sleep(tiempo)
# Por ejemplo una secuencia de bajada
for luz in range(fin, inicio, -paso): #máximo, mínimo, decremento
# Nivel de voltaje deseado en mV
print(luz)
nivel_voltaje_mV = luz
# Convertir el valor del voltaje al rango admitido por el DAC (0-255)
valor_dac = int(nivel_voltaje_mV / 3300 * 255)
# Establecer el nivel de voltaje constante
dac.write(valor_dac)
# Esperar [tiempo] en segundos antes de la siguiente iteración
time.sleep(tiempo)