entree-analogique.ino
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 Minima (Renesas RA4M1, Cortex-M4 @ 14 MHz, 5 V, DAC 12 bits, sans radio) 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 (core « Arduino UNO R4 Boards » installé), choisir « Arduino UNO R4 Minima », sélectionner le port et Téléverser. Le moniteur série est à 9600.
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"));
}