🛠 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

Objetivos

Dominar las entradas GPIO del RP2350: configuración como entrada, resistencia de pull-up interna, antirrebote por software y reacción de una salida (LED GP25) a una acción humana. También descubrirás la errata RP2350-E9 que afecta a las resistencias de pull-down del Bank 0 en las tarjetas A2 anteriores a mediados de 2025.

Material

Código completo

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

El botón conecta GP22 a GND; no se necesita resistencia externa gracias a la resistencia de pull-up interna.

Verificación esperada

LED apagada en reposo, encendida mientras se pulsa el botón, sin parásitos de parpadeo durante la pulsación. Con un terminal serie (UART0 GP0/GP1) puedes añadir un printf para contar las pulsaciones estables.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales