🛠 Lire un bouton poussoir et gérer le rebond

Raspberry Pi Pico · debutant · Schéma : IMG-pico-debutant-2-pico-bouton-gpio.svg — Pico avec un bouton poussoir câblé entre GP2 et GND, résistance de pull-up interne représentée sur la puce

Objectifs

Apprendre à lire une entrée numérique sur la Pico : configurer une GPIO en entrée avec pull-up interne, détecter l'appui sur un bouton et commander la LED embarquée. Tu découvriras aussi le rebond mécanique (bounce) et sa suppression logicielle par temporisation, indispensable pour ne pas compter dix appuis pour un seul.

Matériel

Code complet

// bouton.c — GP2 en entrée pull-up, LED GP25, anti-rebond 50 ms
#include "pico/stdlib.h"

#define BTN_PIN 2
#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);

    uint32_t last_change = 0;
    while (true) {
        bool pressed = !gpio_get(BTN_PIN);   // actif à l'état bas
        if (pressed) {
            if (time_us_64 - last_change > 50000) {
                gpio_put(LED_PIN, !gpio_get(LED_PIN)); // toggle
                last_change = time_us_64;
            }
        }
        sleep_ms(1);
    }
}

Vérification attendue

Au repos, la LED garde son état. Chaque appui franc sur le bouton bascule la LED une seule fois, sans scintillement ni double détection. En débranchant la patte GND du bouton, l'entrée reste tirée à 1 par le pull-up : la LED ne bouge plus, ce qui prouve le rôle du pull-up interne.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels