Controlar la luz (intensidad) de un led por potenciometro (LED PWM)
Te ayudo a controlar la intensidad de un LED usando un potenciómetro con PWM (Modulación por Ancho de Pulso). Aquí tienes el código y la explicación:
Materiales necesarios:
Arduino (Uno, Nano, etc.)
LED
Resistencia de 220Ω a 1kΩ
Potenciómetro de 10kΩ
Cables de conexión
Esquema de conexión:
LED: Ánodo (+) a pin PWM (ej. pin 9), Cátodo (-) a GND (con resistencia)
Potenciómetro:
Terminal izquierdo a 5V
Terminal derecho a GND
Terminal central a pin analógico A0
Código Arduino:
// Pines de conexión
const int potPin = A0; // Pin analógico para el potenciómetro
const int ledPin = 9; // Pin PWM para el LED
// Variables
int potValue = 0; // Valor leído del potenciómetro (0-1023)
int pwmValue = 0; // Valor PWM para el LED (0-255)
void setup() {
// Configurar el pin del LED como salida
pinMode(ledPin, OUTPUT);
// Iniciar comunicación serial (opcional, para monitoreo)
Serial.begin(9600);
}
void loop() {
// Leer el valor del potenciómetro (0-1023)
potValue = analogRead(potPin);
// Convertir el valor a rango PWM (0-255)
pwmValue = map(potValue, 0, 1023, 0, 255);
// Escribir el valor PWM al LED
analogWrite(ledPin, pwmValue);
// Mostrar valores por monitor serial (opcional)
Serial.print("Potenciometro: ");
Serial.print(potValue);
Serial.print(" | PWM: ");
Serial.println(pwmValue);
// Pequeña pausa para estabilidad
delay(10);
}Versión alternativa con filtro para mayor suavidad:
const int potPin = A0;
const int ledPin = 9;
int potValue = 0;
int pwmValue = 0;
int lastPwmValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Leer potenciómetro
potValue = analogRead(potPin);
// Convertir a PWM
pwmValue = map(potValue, 0, 1023, 0, 255);
// Filtro para cambios más suaves
if (abs(pwmValue - lastPwmValue) > 2) {
analogWrite(ledPin, pwmValue);
lastPwmValue = pwmValue;
Serial.print("PWM: ");
Serial.println(pwmValue);
}
delay(20);
}Explicación del código:
Lectura analógica:
analogRead(potPin)lee valores de 0 a 1023Conversión:
map()convierte de 0-1023 a 0-255 (rango PWM)Salida PWM:
analogWrite()controla la intensidad del LED
Pines PWM en Arduino:
Uno/Nano: Pines 3, 5, 6, 9, 10, 11
Mega: Pines 2-13, 44-46
Consejos:
Usa una resistencia de 220Ω-1kΩ en serie con el LED
El potenciómetro de 10kΩ es ideal para este propósito
Puedes ajustar el
delay()para mayor o menor respuesta
Tutorial: Controlar Intensidad de LED con Potenciómetro usando Arduino
¡Hola que tal! Bienvenidos a un nuevo vídeo. En este caso vamos a checar cómo manejar la intensidad de lo que es un LED mediante lo que es el potenciómetro controlado con el Arduino.
Materiales Necesarios
Para este proyecto vamos a necesitar:
Arduino (Uno, Nano, etc.)
LED
Resistencia de 220Ω
Potenciómetro de 10kΩ
Cables de conexión
Protoboard
Conexiones
Para el LED:
La parte negativa del LED (cátodo) lo vamos a conectar al negativo (GND) del Arduino
La parte positiva va a llevar lo que es la resistencia de 220Ω
De la resistencia va a llegar a un cable que conectaremos al puerto número 3
Nota importante: Los puertos 3, 5, 6, 9, 10 y 11 tienen lo que se llaman PWM (Pulse Width Modulation) que nos van a ayudar para poder manejar la intensidad de nuestro LED.
Para el Potenciómetro:
El pin del lado izquierdo (terminal 1) va a la parte negativa (GND)
El pin central (wiper) va a ir conectado al pin A0 (entrada analógica)
El pin número 3 va conectado al positivo (5V)
Programación
Vamos a crear el código paso a paso:
// Declaración de variables
int led = 3; // Pin donde está conectado el LED
int valorPot = 0; // Valor leído del potenciómetro
int intensidadLED = 0; // Valor de intensidad para el LED
void setup() {
// Configurar el pin del LED como salida
pinMode(led, OUTPUT);
// Inicializar comunicación serial para monitoreo
Serial.begin(9600);
}
void loop() {
// Leer el valor del potenciómetro (0-1023)
valorPot = analogRead(A0);
// Mostrar el valor del potenciómetro
Serial.print("Valor Potenciómetro: ");
Serial.println(valorPot);
// Convertir el valor a rango PWM (0-255)
intensidadLED = map(valorPot, 0, 1023, 0, 255);
// Aplicar la intensidad al LED
analogWrite(led, intensidadLED);
// Mostrar el valor de intensidad
Serial.print("Intensidad LED: ");
Serial.println(intensidadLED);
delay(100); // Pequeña pausa para estabilidad
}Explicación del Código
Variables:
led: Pin donde está conectado el LED (puerto 3 con PWM)valorPot: Almacena la lectura del potenciómetro (0-1023)intensidadLED: Almacena el valor mapeado para el PWM (0-255)
Setup():
pinMode(led, OUTPUT): Configura el pin del LED como salidaSerial.begin(9600): Inicia la comunicación serial para monitorear valores
Loop():
Lectura analógica:
analogRead(A0)lee valores de 0 a 1023Mapeo de valores:
map()convierte de 0-1023 a 0-255Salida PWM:
analogWrite()controla la intensidad del LED
Simulación y Resultados
Al iniciar la simulación y abrir el Monitor Serie:
Veremos dos valores:
Primer valor: Valor del potenciómetro (0-1023)
Segundo valor: Intensidad mapeada para el LED (0-255)
Comportamiento:
Valor mínimo (0): LED apagado
Valor medio (512): Intensidad media (127 en PWM)
Valor máximo (1023): Intensidad máxima (255 en PWM)
¿Por qué usar PWM?
El Arduino maneja direcciones de 8 bits para salidas analógicas, por lo tanto:
Entrada analógica: 0-1023 (10 bits)
Salida PWM: 0-255 (8 bits)
La función map() se encarga de hacer esta conversión automáticamente, permitiéndonos controlar suavemente la intensidad del LED.
Consejos Prácticos
Resistencia: Siempre usar resistencia en serie con el LED (220Ω-1kΩ)
Potenciómetro: 10kΩ es ideal para este propósito
Pines PWM: Usar exclusivamente los pines con capacidad PWM (3,5,6,9,10,11 en Arduino Uno)
¡Y listo! Con este proyecto podrán controlar perfectamente la intensidad de un LED girando simplemente el potenciómetro. Es un excelente ejercicio para entender el funcionamiento del PWM y las entradas analógicas en Arduino.
Comentarios
Publicar un comentario