Ir a contenido
Cómo conectar un Push Button a Raspberry Pi - 330ohms

Cómo conectar un Push Button a Raspberry Pi - 330ohms

En este pequeño tutorial veremos cómo conectar un push button o botón pulsador a una tarjeta Raspberry Pi, 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 3.3V. De esta manera cuando el botón no este siendo presionado el pin de la señal tendrá un valor de 3.3V 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 Raspberry Pi a su vez recibe la señal y la lee con uno de sus pines digitales de entrada.

Componentes necesarios

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

Diagrama de conexiones

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

Código de Python3 – Lectura digital

Copiamos el siguiente código a un script de Python y lo ejecutamos con Python3. Oprimimos el botón para observar como el LED se enciende/apaga al mismo tiempo que observamos el mensaje correspondiente en la terminal.

 import RPi.GPIO as GPIO #Importamos el paquete RPi.GPIO y en el código nos refiriremos a el como GPIO import time #Importamos el paquete time  pin_led = 17  #Variable que contiene el pin(GPIO.BCM) al cual conectamos la señal del LED pin_btn = 10  #Variable que contiene el pin(GPIO.BCM) al cual conectamos la señal del botón  GPIO.setmode( GPIO.BCM )        #Establecemos el modo según el cual nos refiriremos a los GPIO de nuestra RPi GPIO.setup( pin_btn , GPIO.IN , pull_up_down=GPIO.PUD_UP ) #Configuramos el pin del botón como Entrada y habilitamos una resistencia de pull_up interna, por lo que podríamos presindir de la resistencia de pull_up física ennuestro circuito GPIO.setup( pin_led , GPIO.OUT) #Configuramos el pin del led como una salida estado_led = False              #Variable que guardará el estado del led  #Contenemos el código principal en un aestructura try para limpiar los GPIO al terminar o presentarse un error try:     while 1: #Implementamos un loop infinito         if GPIO.input( pin_btn ) == GPIO.LOW:   #Si la lectura al pin del botón resulta 0/GPIO.LOW ejecutamos el código del if             estado_led = not estado_led         #Invertimos el estado actual del led             GPIO.output( pin_led , estado_led ) #Escribimos el estado del led en el pin del led             print("Boton presionado")           #Hacemos una impresión en consola              print("Estado " + str(estado_led) + "\n")             time.sleep(0.3)                     #Nos mantenemos en esta línea por 0.3 segundos para dar tiempo a que el botón se libere y el estado del led no cambie varias veces en un solo botonazo    except KeyboardInterrupt:     # CTRL+C     print("\nInterrupcion por teclado") except:     print("Otra interrupcion") finally:     GPIO.cleanup()     print("GPIO.cleanup() ejecutado")

Código de Python3 – Interrupción externa

Copiamos el siguiente código a un script de Python y lo ejecutamos con Python3. Oprimimos el botón para observar como el LED se enciende/apaga al mismo tiempo que observamos el mensaje correspondiente en la terminal.

  import RPi.GPIO as GPIO  #Importamos el paquete RPi.GPIO y en el código nos refiriremos a el como GPIO import time              #Importamos el paquete time    pin_led = 17  #Variable que contiene el pin(GPIO.BCM) al cual conectamos la señal del LED pin_btn = 10  #Variable que contiene el pin(GPIO.BCM) al cual conectamos la señal del botón estado_led = False              #Variable que guardará el estado del led  #Creamos la función que se ejecutará cuando se presente lainterrupciónexterna def button_callback(channel):     global estado_led                         #declaramos la variable global que modificaremos dentro de la función     estado_led = not estado_led               #Invertimos el estado actual del led     GPIO.output( pin_led , estado_led )       #Escribimos el estado del led en el pin del led      print("Boton presionado")                 #Hacemos una impresión en consola      print("Estado " + str(estado_led) + "\n")  GPIO.setmode( GPIO.BCM )                                   #Establecemos el modo según el cual nos refiriremos a los GPIO de nuestra RPi             GPIO.setup( pin_btn , GPIO.IN , pull_up_down=GPIO.PUD_UP ) #Configuramos el pin del botón como Entrada y habilitamos una resistencia de pull_up interna, por lo que podríamos presindir de la resistencia de pull_up física ennuestro circuito GPIO.add_event_detect( pin_btn , GPIO.FALLING, callback=button_callback, bouncetime = 300) #Agregamos una interrupción externa de tipo Falling en el pin del botón GPIO.setup( pin_led , GPIO.OUT)                            #Configuramos el pin del led como una salida    #Contenemos el código principal en un aestructura try para limpiar los GPIO al terminar o presentarse un error try:     while 1:   #Implementamos un loop infinito         time.sleep(1)   #Toda la funcionalidad se realiza en el código de la función que atiende la interrupción except KeyboardInterrupt:     # CTRL+C     print("\nInterrupcion por teclado") except:     print("Otra interrupcion") finally:     GPIO.cleanup()     print("GPIO.cleanup() ejecutado")        

¡Sigue explorando!

Referencias:

https://raspberrypihq.com/use-a-push-button-with-raspberry-pi-gpio/

Para seguir leyendo…

Artículo anterior Tutorial #8 de Raspberry Pi Pico: sensor ultrasónico - 330ohms