Aprende a controlar la rampa de encendido de un LED utilizando un potenciómetro conectado a una entrada analógica de una placa Arduino Nano. Este tutorial te guía paso a paso para crear un sistema de control de brillo suave utilizando PWM.
1 x Arduino Nano – Ver en Amazon
1 x Resistencia 220Ω – Ver en Amazon
1 x LED – Ver en Amazon
1 x Potenciómetro – Ver en Amazon
1 x Placa Protoboard – Ver en Amazon
int salidaPWM = 9; // Pin PWM
int potenciometro = A0; // Pin del potenciómetro
int valorPWM = 0; // Valor inicial de PWM
const int max_duracion_rampa = 3000; // Duración máxima de la rampa en ms
const int min_duracion_rampa = 100; // Duración mínima de la rampa en ms
const int max_incremento = 10; // Máximo incremento permitido por paso
void setup() {
pinMode(salidaPWM, OUTPUT);
pinMode(potenciometro, INPUT);
}
void loop() {
int lectura = analogRead(potenciometro); // Lee el potenciómetro (0-1023)
// Mapea la duración de la rampa en función del potenciómetro (de 100 ms a 1000 ms)
int duracion_rampa = map(lectura, 0, 1023, min_duracion_rampa, max_duracion_rampa);
// Calcula un incremento dinámico en función de la duración de la rampa
int incremento = constrain(255 / (duracion_rampa / 10), 1, max_incremento);
// Asegura que el incremento sea al menos 1 y máximo 10
// Calcula el delay por paso, garantizando que la rampa completa tome el tiempo definido
int velocidad = duracion_rampa / (255 / incremento);
analogWrite(salidaPWM, valorPWM); // Ajusta el PWM
delay(velocidad); // Controla la velocidad de la rampa con el potenciómetro
valorPWM += incremento; // Incrementa el valor de PWM
if (valorPWM > 255) { // Si supera 255, reinicia a 0
valorPWM = 0;
}
}