🛠 Lire un capteur analogique (potentiomètre)

Arduino Mega ADK (Rev3) · debutant · Schéma : IMG-mega-adk-debutant-3-mega-adk-capteur-analogique.svg — Mega ADK, potentiomètre 10 kΩ sur A0 (5 V / GND / curseur) et LED sur la broche PWM 9

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

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

  1. Potenciómetro cuyos dos pines extremos no están conectados a 5 V y GND: lectura flotante o bloqueada en 0/1023.
  2. LED conectado a un pin no PWM: analogWrite no tiene ningún efecto — verificar la lista de pines 2-13 y 44-46.
  3. 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.
  4. Entrada analógica dejada al aire: el valor «respira» por sí solo, comportamiento normal de una entrada de alta impedancia.
  5. 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

← Volver a la ficha 🛠 Todos los tutoriales