🛠 Lire un capteur analogique (potentiomètre)
Objetivos
Leer un sensor analógico —en este caso un potenciómetro— en una de las 16 entradas analógicas del ATmega2560 (conversión de 10 bits, valores de 0 a 1023, referencia de 5 V por defecto, ajustable mediante el pin AREF y analogReference), y controlar el brillo de un LED mediante PWM. Recordatorio de los recursos de la placa: 15 canales PWM (pines 2 a 13 y 44 a 46) controlados por analogWrite en el rango 0–255, y un total de 54 pines digitales.
Material
- 1 × Arduino Mega ADK
- 1 × potenciómetro de 10 kΩ: pin izquierdo → 5 V, pin derecho → GND, cursor (pin central) → A0
- 1 × LED + resistencia de 220 Ω en el pin 9 (pin PWM válido)
- Cable USB tipo B
- No conectar nada al pin 7 (RST del MAX3421E)
Código completo
// mega-adk-capteur-analogique.ino — Board: "Arduino Mega ADK"
const byte ENTREE_ANA = A0; // 16 entrées analogiques, 10 bits : 0..1023
const byte LED_PWM = 9; // PWM : broches 2-13 et 44-46
void setup {
Serial.begin(9600);
pinMode(LED_PWM, OUTPUT);
analogReference(DEFAULT); // référence 5 V par défaut
}
void loop {
int brut = analogRead(ENTREE_ANA); // 0..1023
int valeurMoyenne = 0;
for (int i = 0; i < 8; i++) { // moyenne simple sur 8 échantillons
valeurMoyenne += analogRead(ENTREE_ANA);
delay(1);
}
valeurMoyenne /= 8;
byte consigne = map(valeurMoyenne, 0, 1023, 0, 255);
analogWrite(LED_PWM, consigne); // 0..255
Serial.print(F("brut=")); Serial.print(brut);
Serial.print(F(" moyenne="")); Serial.print(valeurMoyenne);
Serial.print(F(" pwm="")); Serial.println(consigne);
delay(100);
}
Verificación esperada
Al girar el potenciómetro, el valor leído sigue la progresión 0 → 1023 y el LED se apaga progresivamente para luego intensificarse. El promedio de 8 muestras estabiliza la visualización en el puerto serie. Los escalones del PWM de 8 bits apenas son perceptibles a simple vista en el ATmega2560.
Errores frecuentes
- Potenciómetro cuyos dos pines extremos no están conectados a 5 V y GND: lectura flotante o bloqueada en 0/1023.
- LED conectado a un pin no PWM: analogWrite no tiene ningún efecto — verificar la lista de pines 2-13 y 44-46.
- Confusión de las escalas 0-1023 (analogRead) y 0-255 (analogWrite): sin usar map, el LED se satura desde el primer cuarto del recorrido.
- Entrada analógica dejada al aire: el valor «respira» por sí solo, comportamiento normal de una entrada de alta impedancia.
- Sensor real (LDR, TMP36…): verificar la escala de tensión; nunca superar los 5 V en un pin, alimentar el sensor a 3,3 V si es necesario — el pin 3V3 está limitado a 50 mA.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinoscan-hote-usb.inoArduinoadk-chat-android.inoArduinoadk-telemetrie.inoArduinohote-clavier-usb.inoArduino