🛠 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

Objetivos

Aprender a leer una entrada digital en la Pico: configurar un GPIO como entrada con pull-up interno, detectar la pulsación de un botón y controlar el LED integrado. También descubrirás el rebote mecánico (bounce) y su eliminación por software mediante temporización, indispensable para no contar diez pulsaciones por una sola.

Material

Código completo

// 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);
    }
}

Verificación esperada

En reposo, el LED mantiene su estado. Cada pulsación firme del botón cambia el estado del LED una sola vez, sin parpadeos ni doble detección. Al desconectar la pata GND del botón, la entrada se mantiene en 1 gracias al pull-up: el LED deja de moverse, lo que demuestra la función del pull-up interno.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales