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

Raspberry Pi Pico · debutant · Schéma : IMG-pico-debutant-3-pico-adc-potentiometre.svg — potentiomètre relié à 3V3, GND et GP26 (ADC0) de la Pico, tension USB et console série affichant les valeurs

Objectifs

Utiliser le convertisseur analogique-numérique de la Pico : un SAR 12 bits, 4 canaux sortis à 500 ksps (GP26 = ADC0, GP27 = ADC1, GP28 = ADC2 ; ADC3 = VSYS/3 et ADC4 = sonde de température internes). Tu liras un potentiomètre et afficheras les valeurs sur la console série USB. Attention : la Pico n'a pas de DAC — l'ADC est la seule voie analogique, en lecture seulement.

Matériel

Code complet

// adc_pot.c — ADC0 (GP26), moyenne sur 16 échantillons
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/adc.h"

int main(void) {
    stdio_init_all;               // console sur USB (stdio_usb)
    adc_init;
    adc_gpio_init(26);              // GP26 en mode ADC
    adc_select_input(0);            // canal ADC0
    while (true) {
        uint32_t sum = 0;
        for (int i = 0; i < 16; i++) sum += adc_read;
        uint16_t raw = sum / 16;
        float mv = raw * 3300.0f / 4095.0f;
        printf("raw=%u  ~%.0f mV\n", raw, mv);
        sleep_ms(200);
    }
}

Vérification attendue

En tournant le potentiomètre, les valeurs défilent de ~0 à ~4095 (12 bits) et la tension calculée suit 0 → 3,3 V. Les valeurs peuvent être légèrement bruitées : c'est normal, l'ADC de la Pico utilise sa propre alimentation 3,3 V filtrée comme référence, avec un offset inhérent d'environ 30 mV documenté dans la datasheet.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels