🛠 Lire un bouton sur une broche GPIO libre

Raspberry Pi Pico 2 W · debutant · Schéma : IMG-pico-2-w-debutant-2-pico2w-bouton-gpio.svg — Pico 2 W sur breadboard, bouton poussoir entre GP15 et GND, zone GP23 à GP25 et GP29 hachurée réservée à la radio.

Objectifs

Cabler un bouton poussoir sur une broche reellement libre (GP0-GP22), le lire avec une pull-up interne, detecter les appuis avec un anti-rebond logiciel, et memoriser quelles broches sont interdites sur la Pico 2 W : GP23-GP25 et GP29 portent l'alimentation, le CS, l'IRQ et l'horloge SPI du CYW43.

Matériel

Code complet

// main.c - bouton sur GP15, pull-up interne, appui = niveau bas
#include "pico/stdlib.h"

#define BOUTON 15

int main(void) {
    stdio_init_all;
    gpio_init(BOUTON);
    gpio_set_dir(BOUTON, GPIO_IN);
    gpio_pull_up(BOUTON);            // pas de résistance externe nécessaire
    uint32_t dernier = 0;
    bool etat_prec = true;
    while (true) {
        bool relache = gpio_get(BOUTON);
        uint32_t maintenant = to_ms_since_boot(get_absolute_time);
        if (relache != etat_prec && maintenant - dernier >= 20) {
            dernier = maintenant;
            etat_prec = relache;
            if (!relache) {
                printf("Appui !\n");   // anti-rebond logiciel 20 ms
            }
        }
        sleep_ms(1);
    }
}

Vérification attendue

Chaque appui imprime exactement une ligne Appui ! sur la série, sans doublons. Au démarrage, sans appui, la broche reste à l'état haut grâce à la pull-up interne ; lever le doigt ne déclenche aucun message parasite.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels