Cómo conectar un Push Button a Arduino

En este pequeño tutorial veremos cómo conectar un push button o botón pulsador a una tarjeta Arduino, también encontrarás códigos de programación para tus primeras pruebas.

Un push button es un componente eléctrico compuesto, en su mayoría, por 2 terminales o pines, estas terminales pueden estar o no en contacto eléctrico dependiendo de si el botón esta siendo presionado o no, en este sentido los push button pueden clasificarse en:

  • Normalmente abierto: Sus terminales no están en contacto eléctrico cuando el botón no es presionado y entran en contacto eléctrico cuando el botón es presionado.
  • Normalmente cerrado: Sus terminales están en contacto eléctrico cuando el botón no es presionado y dejan de tener contacto eléctrico cuando el botón es presionado.

En este ejemplo utilizaremos un push button normalmente abierto.

Para conectar un push button a una tarjeta de desarrollo es necesario una resistencia auxiliar para conseguir un arreglo en pull-up o pull-down. En este caso utilizaremos la resistencia en un arreglo de pull-up, es decir, uno de los pines del botón estará conectado a tierra y el segundo pin que será el pin de la señal tendrá conectado el pin de una resistencia de 10 kohms mientras que el segundo pin de dicha resistencia estará conectado a 5V. De esta manera cuando el botón no este siendo presionado el pin de la señal tendrá un valor de 5V y cuando esté siendo presionado tendrá un valor de 0V.

Un push button es un sensor digital de entrada, es decir, su funcionamiento consiste en entregar la información correspondiente si es presionado o no a través del voltaje en su pin de señal, la tarjeta Arduino a su vez recibe la señal y la lee con uno de sus pines digitales de entrada. En este ejemplo conectaremos el pin de señal de nuestro push button al pin digital #2 de la tarjeta.

Componentes necesarios

  • Push button
  • Protoboard chica
  • LED 5mm
  • Resistor de 330 ohms
  • Resistor de 10 kohms
  • Arduino Uno
  • Cables de conexiones M-M

Diagrama de conexiones

Arduino Uno – LED – Push button con resistencia de pull-up

Código de Arduino – Lectura digital

Cargamos el código a la tarjeta Arduino Uno y abrimos el monitor serie. Oprimimos el botón para observar como el LED se enciende/apaga al mismo tiempo que observamos el mensaje correspondiente en el monitor serie.


int pinBtn = 2;//Variable de tipo entero que contiene el numero del pin al cual conectamos la señal de un botón
int pinLed = 3;//Variable de tipo entero que contiene el numero del pin al cual conectamos la señal de un led

void setup() {
  
  Serial.begin(9600);//Iniciamos la comunicación serial
  pinMode(pinBtn, INPUT);//Configuramos el pin del boton como entrada
  pinMode(pinLed, OUTPUT);//Configuramos el pin del led como salida
  
}

void loop() {
  
  if( digitalRead(pinBtn) ==0 ){//Si la lectura al pin del botón regresa un cero entramos al if y ejecutamos el código, si no, nos saltamos el código del if
    digitalWrite( pinLed, !digitalRead(pinLed) );//Obtenemos la lectura del pin del Led para escribir en el mismo pin el valor opuesto 0->1 1->0
    Serial.println( "El estado del led ha cambiado" );//Imprimimos en el monitor serie
    delay(300);//Esperamos 0.3 segundos antes de salir del if para evitar que un solo botonazo cause varios cambios de estado en el pin del led  
  }
  
}

Código de Arduino – Interrupción externa

Cargamos el código a la tarjeta Arduino Uno y abrimos el monitor serie. Oprimimos el botón para observar como el LED se enciende/apaga al mismo tiempo que observamos el mensaje correspondiente en el monitor serie.



int pinBtn = 2;//Variable de tipo entero que contiene el numero del pin al cual conectamos la señal de un botón
int pinLed = 3;//Variable de tipo entero que contiene el numero del pin al cual conectamos la señal de un led

void setup() {
  
  Serial.begin(9600);//Iniciamos la comunicación serial
  
  pinMode(pinLed, OUTPUT);//Configuramos el pin del led como salida
  pinMode(pinBtn, INPUT_PULLUP);//Configuramos el pin del boton como entrada con ressitencia de PULLUP interna
  attachInterrupt(digitalPinToInterrupt(pinBtn), toggle , FALLING);//configuramos la interrupción externa
}

void loop() {
  
}

void toggle() {//Función que atenderá la interrupción externa
  
  digitalWrite( pinLed, !digitalRead(pinLed) );//Obtenemos la lectura del pin del Led para escribir en el mismo pin el valor opuesto 0->1 1->0
  Serial.println( "El estado del led ha cambiado" );//Imprimimos en el monitor serie