🛠 Lire un bouton poussoir sur GPIO

Raspberry Pi Pico 2 · debutant · Schéma : IMG-pico-2-debutant-2-pico2-bouton-gpio.svg — Pico 2 avec un bouton poussoir entre GP22 et la masse, résistance de pull-up interne représentée sur la broche

Objectifs

Maîtriser les entrées GPIO du RP2350 : configuration en entrée, résistance de pull-up interne, anti-rebond logiciel, et réaction d'une sortie (LED GP25) à une action humaine. Vous découvrirez aussi l'erratum RP2350-E9 qui concerne les pull-down du Bank 0 sur les cartes A2 d'avant mi-2025.

Matériel

Code complet

/* bouton.c — appui sur GP22 -> LED GP25 s'allume */
#include "pico/stdlib.h"

#define BTN_PIN 22
#define LED_PIN 25

int main(void) {
    gpio_init(BTN_PIN);
    gpio_set_dir(BTN_PIN, GPIO_IN);
    gpio_pull_up(BTN_PIN);          /* pull-up interne : repos = 1 */
    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);

    uint pressed = 0;
    while (true) {
        uint now = !gpio_get(BTN_PIN);      /* actif à l'état bas */
        if (now != pressed) {               /* anti-rebond simple */
            sleep_ms(20);
            pressed = !gpio_get(BTN_PIN);
            gpio_put(LED_PIN, pressed);
        }
        sleep_ms(5);
    }
}

Le bouton relie GP22 à GND ; aucune résistance externe n'est nécessaire grâce au pull-up interne.

Vérification attendue

LED éteinte au repos, allumée tant que le bouton est pressé, sans clignotement parasite lors de l'appui. Avec un terminal série (UART0 GP0/GP1) vous pouvez ajouter un printf pour compter les appuis stables.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels