🛠 Lire un potentiomètre avec l'ADC 12 bits

GD32F103 (GigaDevice) — puce + cartes compatibles Blue Pill · intermediaire · Schéma : IMG-gd32f103-intermediaire-2-adc-potentiometre.svg — potentiomètre entre 3,3 V et masse, curseur relié à PA1, conversion ADC 12 bits du GD32F103C8 affichée sur la console série

Objectifs

Configurer et lire une entrée analogique : le GD32F103C8 embarque des ADC SAR 12 bits jusqu'à 1 MSPS (attention : ADC2 est absente des variantes C4/C6/C8/CB) et l'horloge ADC ne doit jamais dépasser 14 MHz. Avec le core CommunityGD32Cores, analogRead renvoie nativement une valeur 12 bits (0-4095), plus précis que le 10 bits d'un Arduino classique. Vous allez convertir la position d'un potentiomètre en millivolts.

Matériel

Code complet

// adc_pot.ino — GD32F103C8, core CommunityGD32Cores
const uint8_t POT_PIN = PA1;    // entrée analogique (canal IN1) > 

void setup {
  Serial.begin(115200);
  pinMode(POT_PIN, INPUT);
}

void loop {
  uint16_t brut = analogRead(POT_PIN);        // 12 bits : 0..4095
  uint16_t mv   = (uint32_t)brut * 3300UL / 4096UL;
  Serial.print("ADC = ");
  Serial.print(brut);
  Serial.print("  ->  ");
  Serial.print(mv);
  Serial.println(" mV");
  delay(100);
}

Vérification attendue

En tournant le potentiomètre, la valeur suit la position de 0 environ (curseur côté masse) à 4095 / environ 3300 mV (curseur côté 3,3 V). Au repos, doigt sur le curseur, la valeur peut bouger : c'est normal, une entrée non pilotée capte le bruit. La conversion est stable quand vous lâchez le bouton.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels