Leer un potenciómetro con Arduino es una de las primeras cosas que vale la pena aprender. Son tres cables, unas pocas líneas de código, y obtienes una entrada variable que puedes usar para casi cualquier cosa: control de velocidad, brillo, desplazamiento, lo que sea.
Componentes
- Arduino (cualquier modelo)
- Potenciómetro de 10 kΩ
- Cables dupont
Cómo funciona un potenciómetro
Un potenciómetro es una resistencia variable con tres pines. Los dos pines exteriores se conectan a alimentación y masa. El pin central — el cursor — se desliza a lo largo de una pista resistiva, de modo que al girar el mando se obtiene un voltaje entre 0 y 5 voltios. Ese voltaje es lo que lee el Arduino.
Conexiones
Conectar el pin exterior izquierdo a 5V, el pin exterior derecho a GND, y el pin central del cursor a A0 en el Arduino. Cualquier pin de entrada analógica sirve — A0 es solo una opción habitual. Eso es todo el circuito.
Leer valores brutos
La función analogRead() devuelve un valor entre 0 y 1023, correspondiente a 0–5V. Subir el sketch de abajo, abrir el monitor serie a 9600 baudios y girar el mando — el número cambia en tiempo real.
void setup() {
Serial.begin(9600);
}
void loop() {
int value = analogRead(A0);
Serial.println(value);
delay(100);
}
Convertir a porcentaje
Los números brutos entre 0 y 1023 no siempre son los más legibles. La función map() permite convertirlos a cualquier rango. Aquí una versión que muestra de 0 a 100%, mucho más fácil de leer de un vistazo:
void setup() {
Serial.begin(9600);
}
void loop() {
int value = analogRead(A0);
int percent = map(value, 0, 1023, 0, 100);
Serial.print(percent);
Serial.println("%");
delay(100);
}
Para qué puedes usarlo
Con una entrada analógica variable puedes controlar casi cualquier cosa: brillo de un LED con PWM, velocidad de un motor con un puente H, posición de un servo, o incluso navegar por un menú. Es un componente simple que aparece en todas partes.
El código completo está en mi web. Si construyes algo con esto, compártelo en el Discord — me gustaría ver qué hace la gente.