🛠 Lire un capteur analogique (potentiomètre)
Objetivos
Descubrir el ADC de 10 bits del ATmega328P: el Nano clásico dispone de 8 entradas analógicas (A0-A7, de las cuales A6/A7 son específicas del formato Nano) que convierten 0-5 V en valores de 0-1023. Conectamos un potenciómetro como divisor de tensión en A0 y mostramos el valor en el monitor serie y en el trazador serie.
Material
- 1 × Arduino Nano clásico (ATmega328P, ADC de 10 bits, 8 entradas analógicas)
- 1 × potenciómetro de 10 kΩ (o sensor analógico: LDR + resistencia, sensor de flexión…)
- 3 × cables; alimentación de 5 V de la placa (nunca más: el ADC acepta un máximo de 0-5 V)
Código completo
// Lecture analogique 10 bits sur A0
const uint8_t CAPTEUR = A0;
uint32_t derniere = 0;
void setup {
Serial.begin(9600); // A0 en entrée implicite pour analogRead
}
void loop {
if (millis - derniere >= 50) { // 20 affichages/s
derniere = millis;
int brut = analogRead(CAPTEUR); // 0..1023
float tension = brut * (5.0 / 1023.0); // conversion en volts
Serial.print(brut);
Serial.print(F(" -> "));
Serial.print(tension);
Serial.println(F(" V"));
}
}
Verificación esperada
Al girar el potenciómetro, el valor bruto sigue de 0 (cursor hacia masa) a 1023 (cursor hacia 5 V) y la tensión mostrada sigue de 0,00-5,00 V. El trazador serie dibuja una línea continua. Los valores en reposo son estables con una desviación de ±1, lo que demuestra un buen contacto de masa.
Errores frecuentes
- Medir más de 5 V en la entrada: el ADC está limitado a Vcc; por encima de esto se corre el riesgo de dañar el pin (usar un divisor para 12 V).
- Olvidar conectar la masa del sensor a la masa del Nano: la lectura deriva y oscila sin motivo.
- Esperar 0-5 V en analogRead: la función devuelve 0-1023, no voltios; es necesaria una conversión manual.
- Conectar el cursor a 5 V y los otros dos pines juntos: el valor deja de cambiar, el divisor está en cortocircuito.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
buzzer-melodie.inoArduinoservo-sweep.inoArduinoultrason-hcsr04.inoArduinolcd-i2c.inoArduinoeeprom-contre.inoArduinosommeil-watchdog.inoArduino