🛠 Lire un capteur analogique et générer une tension avec le DAC

Arduino MKR WiFi 1010 · debutant · Schéma : IMG-mkr-wifi-1010-debutant-3-mkrwifi-capteur-analogique-dac.svg — Potentiomètre alimenté en 3,3 V relié à l'entrée A1 (ADC 12 bits) et sortie DAC A0 (10 bits) vers un multimètre, sur la MKR WiFi 1010.

Objetivos

Aprovechar el verdadero convertidor analógico-digital (7 entradas, resolución configurable de 8/10/12 bits) y la salida analógica real DAC de 10 bits en A0 — un verdadero lujo ausente en los Arduino Uno. Leemos un potenciómetro en A1 y generamos una tensión continua o una rampa en A0.

Material

Código completo

// ADC sur A1 (12 bits), DAC sur A0 (10 bits).
const uint8_t PIN_ANA = A1;
const uint8_t PIN_DAC = A0;

void setup {
  Serial.begin(115200);
  analogReadResolution(12);   // ADC: 8/10/12 bits configurables
  analogWriteResolution(10);  // DAC: 10 bits
  pinMode(PIN_DAC, OUTPUT);   // A0 = sortie analogique vraie (DAC)
}

void loop {
  int raw = analogRead(PIN_ANA);
  float volts = raw * 3.3f / 4095.0f;
  analogWrite(PIN_DAC, map(raw, 0, 4095, 0, 1023)); // miroir 10 bits
  Serial.printf("raw=%u (%.2f V) -> DAC %u\n", raw, volts,
                map(raw, 0, 4095, 0, 1023));
  delay(100);
}

Verificación esperada

Al girar el potenciómetro, el valor bruto sigue 0–4095 (resolución de 12 bits) y la tensión calculada 0–3,3 V. El multímetro conectado a A0 muestra la misma tensión que el cursor: el DAC produce una verdadera tensión suave, no una PWM filtrada. Serial.printf funciona nativamente en SAMD.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales