🛠 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.

Objectifs

Exploiter le vrai convertisseur analogique-numérique (7 entrées, résolution configurable 8/10/12 bits) et la sortie analogique réelle DAC 10 bits sur A0 — un vrai luxe absent des Arduino Uno. On lit un potentiomètre sur A1 et on génère une tension continue ou une rampe sur A0.

Matériel

Code complet

// 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);
}

Vérification attendue

En tournant le potentiomètre, la valeur brute suit 0–4095 (résolution 12 bits) et la tension calculée 0–3,3 V. Le multimètre branché sur A0 affiche la même tension que le curseur : le DAC produit une vraie tension lisse, pas un haché PWM filtré. Serial.printf fonctionne nativement sur SAMD.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels