entree-analogique.ino

Arduino UNO R4 WiFi · Fichier : entree-analogique.ino · Langage : Arduino · Usage : Exploiter la résolution 14 bits de l'ADC du R4

L'ADC du R4 monte à 14 bits (16384 niveaux) contre 10 sur les Uno classiques : la fenêtre glissante de 32 mesures donne des tensions très stables, idéales pour un capteur de précision ou un pont de jauge amplifié.

Matériel requis

Une Arduino UNO R4 WiFi (Renesas RA4M1 @ 14 MHz + ESP32-S3 Wi-Fi/BLE compagnon, matrice LED 12x8, LED RGB) alimentée par USB ou 6-24 V. 1 potentiomètre 10 kΩ pour tester (ou capteur analogique 0-3,3 V).

Câblage

Curseur sur A1, extrémités du potentiomètre sur 3V3 et GND. Entrée max 3,3 V (attention aux montages 5 V).

Fonctionnement

analogReadResolution(14) exploite toute la résolution du convertisseur ; la moyenne glissante divise le bruit par √32. La conversion se fait en 3,3 V de référence.

Exécution

Arduino IDE 2.x avec le core « Arduino UNO R4 Boards », carte « Arduino UNO R4 WiFi », port série puis Téléverser. Le coprocesseur ESP32-S3 se met à jour séparément si l'IDE le demande.

Variantes

Basculer la référence interne (analogReference) pour mesurer au-delà de 3,3 V, ou échantillonner en timer + DMA pour de l'audio.

entree-analogique.ino

// ADC 14 bits du R4 (0..16383) avec moyenne glissante.
const int CANAL = A1;
const int NB = 32;

uint16_t fenetre[NB];
int idx = 0;
bool plein = false;
unsigned long t0 = 0;

void setup() {
  analogReadResolution(14);   // 14 bits natifs du RA4M1
  Serial.begin(9600);
}

void loop() {
  if (millis() - t0 < 100) return;
  t0 = millis();

  fenetre[idx] = analogRead(CANAL);
  idx = (idx + 1) % NB;
  if (idx == 0) plein = true;
  int n = plein ? NB : idx;
  if (!n) return;

  long somme = 0;
  for (int i = 0; i < n; i++) somme += fenetre[i];
  long moyenne = somme / n;

  float tension = moyenne * 3.3 / 16383.0;
  Serial.print(F("brut=")); Serial.print(moyenne);
  Serial.print(F("  U=")); Serial.print(tension, 4);
  Serial.println(F(" V"));
}

← Retour à la fiche