Arduino UNO R4 - Botón

El botón es un componente sencillo pero importante que se utiliza en muchos proyectos de Arduino UNO R4. Puede parecer complicado debido a sus propiedades mecánicas y físicas, lo que puede resultar desafiante para los principiantes. Este tutorial está diseñado para ayudar a los principiantes a entenderlo fácilmente. ¡Comencemos!

botón del Arduino UNO R4

※ Nota:

Antes de aprender cómo usar el botón con Arduino Uno R4, queremos resaltar dos errores comunes que suelen encontrar los principiantes:

  1. El problema de la entrada flotante:
    • Síntoma: Cuando un botón está conectado a un pin de entrada de Arduino UNO R4, el estado del pin de entrada es impredecible y no se refleja en el estado del botón.
    • Causa: El pin del botón no está conectado a una resistencia pull-down o pull-up.
    • Solución: Conecte una resistencia pull-down o pull-up al pin de entrada. Más detalles se proporcionarán más adelante en este tutorial.
  • El fenómeno de rebote:
    • Síntoma: El código de Arduino UNO R4 lee el estado del botón e intenta identificar eventos de pulsación detectando cambios de estado (de HIGH a LOW, o de LOW a HIGH). Sin embargo, cuando el botón se presiona solo una vez, el Arduino UNO R4 puede detectar múltiples pulsaciones.
    • Causa: Las propiedades mecánicas provocan que el estado del pin de entrada cambie rápidamente entre LOW y HIGH varias veces con una sola pulsación.
    • Solución: Implementar debounce. Más detalles estarán en el tutorial Arduino UNO R4 - Botón - Debounce.

    El rebote solo afecta a las aplicaciones que requieren un conteo preciso de las pulsaciones del botón. En otras aplicaciones, puede que no sea un problema.

    Botón Acerca de

    El botón pulsador, también conocido como botón táctil o interruptor momentáneo, es un interruptor que se cierra cuando lo presionas y lo mantienes presionado, y se abre cuando lo sueltas. Los botones pulsadores vienen en diferentes tipos, principalmente se dividen en dos grupos:

    • Push buttons for PCB mounting (can be used on a breadboard)
    • Push buttons for mounting on a panel
    Arduino UNO R4 Botón pulsador

    Diagrama de pines

    Los pulsadores montados en PCB suelen tener cuatro pines.

    Pinout del botón

    Estos pines están conectados entre sí en pares dentro del dispositivo, por lo que solo necesitamos usar dos de los cuatro pines que no están conectados entre sí.

    Hay cuatro formas, pero en realidad son dos porque son similares, para conectar el botón (consulte la imagen).

    Cómo usar el botón

    Un botón tiene cuatro pines, pero ¿por qué solo usamos dos? ⇒ Esto es para mantenerlo estable en la placa de circuito impreso (PCB) y resistir la presión.

    Los botones de montaje en panel suelen tener dos pines.

    Esquema de pines de un pulsador de dos pines
    image source: diyables.io

    El módulo de pulsador incluye una resistencia pull-down integrada, lo que garantiza que la salida permanezca en nivel bajo cuando el botón no está presionado. Tiene tres pines:

    • GND: Conecta este pin a la tierra.
    • VCC: Conecta este pin a una fuente de alimentación de 5 V o 3.3 V.
    • OUT: Conecta este pin a una entrada digital en tu Arduino.

    Con esta configuración, el módulo produce un nivel bajo cuando el botón no está presionado y un nivel alto cuando el botón está presionado.

    Cómo funciona

    • Cuando el botón no está presionado, el pin A y el pin B no están conectados.
    • Cuando se presiona el botón, el pin A y el pin B están conectados.
    Cómo funciona el botón

    Arduino UNO R4 - Botón

    Un pin del botón se conecta a VCC o GND, y el otro pin se conecta a un pin del Arduino UNO R4.

    Podemos determinar si el botón está presionado o no verificando el estado de un pin en el Arduino UNO R4 configurado como entrada.

    Estado del botón y estado de pulsación

    La relación entre el estado del botón y el estado de la pulsación depende de cómo conectamos el botón al Arduino UNO R4 y de la configuración del pin del Arduino UNO R4.

    Hay dos formas de usar un botón con Arduino UNO R4:

    1. Conecta una de las patillas de un botón a VCC y la otra a un pin del Arduino UNO R4 con una resistencia pull-down.
      • Cuando se presiona el botón, el estado del pin del Arduino UNO R4 es ALTO. De lo contrario, el estado del pin es BAJO.
      • DEBES usar una resistencia externa.
  • Conecta una de las patillas de un botón a GND y la otra a un pin del Arduino UNO R4 con una resistencia pull-up.
    • Cuando se presiona el botón, el estado del pin del Arduino UNO R4 es BAJO. De lo contrario, el estado del pin es ALTO.
    • Puedes usar una resistencia interna o externa. La resistencia interna está integrada en el Arduino UNO R4 y puede activarse mediante código de Arduino.

    ※ Nota:

    Si no usamos una resistencia pull-down o pull-up, el pin de entrada queda "flotante" cuando el botón no está presionado. Esto significa que el estado del pin podría cambiar de forma impredecible a HIGH o LOW, causando lecturas incorrectas.

    • La peor práctica: Configurar el pin del Arduino UNO R4 como entrada usando pinMode(BUTTON_PIN, INPUT) sin ninguna resistencia pull-down o pull-up.
    • La mejor práctica: Configurar el pin del Arduino UNO R4 con una resistencia pull-up interna usando pinMode(BUTTON_PIN, INPUT_PULLUP). Esto no requiere una resistencia externa.

    Para facilitar las cosas a los principiantes, este tutorial utiliza el método más sencillo: configurar el pin del Arduino UNO R4 como una entrada con pull-up interna sin necesidad de una resistencia externa. Los principiantes no tienen que preocuparse por conectar la resistencia de pull-up o pull-down. Solo deben usar el código de Arduino proporcionado.

    Diagrama de Cableado

    • Diagrama de cableado para Arduino UNO R4 y botón de montaje en PCB
    Diagrama de cableado del botón de Arduino UNO R4

    This image is created using Fritzing. Click to enlarge image

    • Diagrama de cableado para Arduino UNO R4 y botón de montaje en panel
    Diagrama de cableado de un pulsador de dos pines para Arduino UNO R4

    This image is created using Fritzing. Click to enlarge image

    Ver La mejor forma de alimentar Arduino Uno R4 y otros componentes.

    Cómo programar para el botón

    • Configura el pin 7 del Arduino UNO R4 como una entrada pull-up interna utilizando la función pinMode().
    pinMode(7, INPUT_PULLUP);
    • Utiliza la función digitalRead() para verificar el estado del pin del Arduino UNO R4.
    int button_state = digitalRead(BUTTON_PIN);

    ※ Nota:

    Hay dos casos de uso comunes:

    • El primero: Cuando la entrada está en ALTO, realizar una acción. Cuando la entrada está en BAJO, realizar la acción opuesta.
    • El segundo: Cuando la entrada cambia de BAJO a ALTO (o de ALTO a BAJO), realizar una acción.

    En función del propósito, seleccionamos una de estas opciones. Por ejemplo, cuando se usa un botón para controlar un LED:

    • Si necesitamos que el LED se encienda cuando se presiona el botón y se apague cuando no se presiona, debemos elegir el primer escenario.
    • Si queremos que el LED cambie entre ENCENDIDO y APAGADO cada vez que se presiona el botón, debemos optar por el segundo escenario.

    Código de Arduino UNO R4 - Lectura del estado del botón

    #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the pushbutton pin as a pull-up input pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: int button_state = digitalRead(BUTTON_PIN); // print out the button's state Serial.println(button_state); delay(500); }

    Pasos R\u00e1pidos

    Siga estas instrucciones paso a paso:

    • Si es la primera vez que usas el Arduino UNO R4 WiFi/Minima, consulta el tutorial sobre configuración del entorno para Arduino UNO R4 WiFi/Minima en el IDE de Arduino.
    • Conecta el botón al Arduino UNO R4 según el diagrama proporcionado.
    • Conecta la placa Arduino Uno R4 a tu computadora mediante un cable USB.
    • Inicia el IDE de Arduino en tu computadora.
    • Selecciona la placa adecuada Arduino Uno R4 (p. ej., Arduino Uno R4 WiFi) y el puerto COM.
    • Copia el código anterior y ábrelo en el IDE de Arduino
    • Haz clic en el botón Subir en el IDE de Arduino para enviar el código a tu Arduino UNO R4.
    Arduino IDE - Cómo subir código
    • Abre el Monitor Serial.
    • Pulsa y suelta el botón varias veces.
    • Verifica el resultado en el Monitor Serial.
    COM6
    Send
    1 1 1 0 0 0 0 0 0 1 1 1
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    1 significa ENCENDIDO, 0 significa APAGADO.

    Explicación del código

    La explicación está en la sección de comentarios del código de Arduino anterior.

    Código para Arduino UNO R4 - Detección del evento de pulsación y liberación del botón

    Vamos a cambiar el código para reconocer cuándo se presionan y se sueltan los botones.

    /* * Este código de Arduino UNO R4 fue desarrollado por es.newbiely.com * Este código de Arduino UNO R4 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-button */ #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button int button_state; // the current state of button int prev_button_state = LOW; // the previous state of button void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the pushbutton pin as a pull-up input pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) Serial.println("The button is pressed"); else if (prev_button_state == LOW && button_state == HIGH) Serial.println("The button is released"); // save the last state prev_button_state = button_state; }

    Pasos R\u00e1pidos

    • Copia el código anterior y pégalo en Arduino IDE
    • Haz clic en el botón Subir en Arduino IDE para enviar el código a Arduino UNO R4.
    • Abre el Monitor Serial.
    • Presiona y suelta el botón.
    • Consulta el resultado en el Monitor Serial.
    COM6
    Send
    The button is pressed The button is released
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    ※ Nota:

    • Incluso si presionas y sueltas el botón solo una vez, el Monitor Serial podría mostrar múltiples pulsaciones y liberaciones. Este comportamiento habitual se conoce como el 'fenómeno de rebote'. Puedes encontrar más detalles en el Arduino UNO R4 - Tutorial de Rebote de Botón.
    • Para simplificar el proceso para principiantes que usan varios botones, desarrollamos una biblioteca llamada ezButton. Puedes aprender sobre la biblioteca ezButton aquí.
    • Si estás usando el módulo de botón, configura el pin en modo de entrada usando pinMode(BUTTON_PIN, INPUT). En esta configuración, el módulo emite BAJO cuando el botón no está presionado y ALTO cuando está presionado.

    Video Tutorial

    Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

    ※ NUESTROS MENSAJES

    • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!