🛠 ADC 12 bits et PWM sur la Nucleo-F401RE : oversampling, millivolts et LED en fondu

Famille STM32 Nucleo-64 F4 — modelo insignia: Nucleo-F401RE · intermediaire · Schéma : IMG-stm32f4-nucleo-intermediaire-5-stm32f4nuc-adc-12bits-pwm-fade.svg — potentiomètre relié à A0, bloc ADC 12 bits (0-4095) convertissant en bloc PWM pilotant une LED sur D5 via une résistance

Objetivos

Usa las dos caras analógicas de la F401RE: el ADC de 12 bits (16 canales) y la PWM controlada por temporizador mediante analogWrite. Construirás un bucle de entrada por potenciómetro y salida de brillo con una conversión correcta a milivoltios, y luego añadirás sobremuestreo para estabilizar las últimas cifras.

Hardware

Los hechos

Código

const int kFadePin  = D5;   // PWM-capable pin mapped by the core
const int kProbePin = A0;   // PA0 on the Arduino connector

void setup {
  Serial.begin(115200);     // ST-LINK VCP (USART2, PA2/PA3)
  analogWrite(kFadePin, 0);
}

void loop {
  // oversample: 64 reads averaged to stabilise the low digits
  long sum = 0;
  for (int i = 0; i < 64; i++) sum += analogRead(kProbePin);
  int raw = sum / 64;

  unsigned long mv = (unsigned long)(raw * 3300 / 4095);  // 12-bit scale
  int duty = map(raw, 0, 4095, 0, 255);
  analogWrite(kFadePin, duty);
  Serial.printf("raw=%4d  %4lu mV  duty=%3d\n", raw, mv, duty);
  delay(100);
}

Pasos

  1. Conecta el divisor de potenciómetro y el LED según lo descrito.
  2. Carga el código seleccionando la placa Nucleo F401RE; abre el monitor serie a 115200.
  3. Gira el potenciómetro: el brillo del LED y la columna de mV deben seguirse mutuamente.
  4. Compara una única lectura de analogRead con el promedio de 64 muestras — el parpadeo en la última cifra desaparece.

Resultado esperado

Un barrido suave de 0 → 3300 mV con un ciclo de trabajo PWM coincidente de 0–255. El bucle de parpadeo + desvanecimiento + sonda ADC incluido en los ejemplos propios del núcleo es el mismo patrón en un solo sketch: parpadeo duro en PA5, rampa PWM visible por software con analogWrite, y una sonda de 12 bits impresa a través del VCP ST-LINK.

Errores comunes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales