entree-analogique.ino
The R4 ADC reaches 14 bits (16384 levels) versus 10 on classic Unos: the 32-sample sliding window yields very stable voltages, ideal for a precision sensor or amplified gauge bridge.
Hardware
An Arduino UNO R4 Minima (Renesas RA4M1, Cortex-M4 @ 14 MHz, 5 V, 12-bit DAC, no radio) powered by USB or 6-24 V. 1 10 kΩ potentiometer to test (or analog sensor 0-3.3 V).
Wiring
Wiper to A1, potentiometer ends to 3V3 and GND. Max input 3.3 V (mind 5 V circuits).
How it works
analogReadResolution(14) exploits the converter's full resolution; the sliding window divides noise by √32. Conversion uses a 3.3 V reference.
Running it
Arduino IDE 2.x (with the « Arduino UNO R4 Boards » core installed), pick « Arduino UNO R4 Minima », select the port and Upload. The serial monitor runs at 9600.
Variants
Switch to the internal reference (analogReference) to measure beyond 3.3 V, or sample with timer + DMA for 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"));
}