0
(0)

Si alguna vez ha usado un LED con una Raspberry Pi, probablemente sepa cómo funcionan las salidas GPIO. El código hace que la electricidad fluya a través de los pines de entrada/salida de propósito general (GPIO), pasa a través de los LED y enciende todo. Pero, ¿alguna vez has intentado hacer lo contrario? Con los pulsadores, puede hacer exactamente lo contrario. ¡Este tutorial le muestra cómo convertir un pin GPIO en un pin de entrada, escuchando cada botón que presiona!

Cómo funcionan los pulsadores

Un pulsador es un tipo de interruptor. Tiene dos pines conductores separados que evitan un circuito completo al estar separados entre sí. Cuando presionas un botón, en realidad estás juntando los dos pines, completando el circuito. Pero si lo sueltas, hay un mecanismo similar a un resorte que vuelve a separar los pines.

Pulsador en placa de pruebas Solo

Botones pulsadores de 4 pines

El botón pulsador típico en los kits de sensores tiene cuatro pines, cada uno de ellos separado de los demás. Una placa móvil de metal se encuentra justo debajo del área del botón, que baja y conecta todos los demás pines cuando se presiona el botón hacia abajo.

Pulsador Parte traseraUn botón pulsador de 4 pines tiene cuatro pines debajo del botón.

Encontrará dos placas dentro de un botón pulsador de 4 pines. Cada uno está conectado a dos pines externos. Ambas placas se mantienen separadas entre sí y solo se pueden conectar presionando una tercera placa: la placa de metal debajo del botón.

Asignación de pines de botón pulsador de 4 pinesPinout de un pulsador de 4 pines. Un interruptor conecta los dos pares de pines.

En cierto modo, siempre hay dos pines conectados en un pulsador. Cuando presiona el botón pulsador de 4 pines, conecta los cuatro pines juntos.

Uso de pulsadores con pines GPIO de Raspberry Pi

Esta vez, estamos haciendo que los pines GPIO de Raspberry Pi detecten la pulsación de un botón desde un pulsador. Cuando la electricidad pasa a través de él, la Raspberry Pi imprimirá un mensaje que le indicará que está funcionando.

Cosas que necesitarás

  • Pulsador (4 pines)
  • Resistencia (una entre 100Ω y 1000Ω debería funcionar)
  • Cables puente
  • voltímetro (opcional)
  • frambuesa pi
  • Monitor y teclado (o SSH)

Cómo usar los botones pulsadores

  1. Abra el editor de código de su elección y pegue el siguiente código:
import RPi.GPIO as GPIO
from time import sleep
 
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
 
while True:
  if GPIO.input(7) == GPIO.HIGH:
    print("Pin 7 is HIGH!")
  elif GPIO.input(7) == GPIO.LOW:
    print("Pin 7 is LOW...")
  sleep(0.15)
  1. Guárdelo como «rpi-pushbutton.py» (o cualquier nombre que desee, siempre que la extensión del archivo sea la misma).
  1. Construye el circuito. En un pin del botón, conéctelo al pin 7 y una resistencia en paralelo. Conecte un cable de puente a un pin GND (pines 6, 7, 14, 20, 25, 30, 34 o 39) en el otro lado de esta resistencia, luego conecte otro cable de puente a un pin de 3.3V (pines 1 o 17 ) en un pin de botón separado.

Pulsador esquemático y Breadboard VerIzquierda: diagrama esquemático del circuito del botón pulsador. Derecha: Pulsador en vivo en placa de pruebas. Designaciones de color de los cables puente: rojo = 3,3 V, marrón = pin 7 y negro = GND.

Propina: para encontrar el número de pin correcto, sostenga su Raspberry Pi de manera que los pines GPIO queden en la esquina superior derecha. El pin superior izquierdo es el pin 1, y a la derecha está el pin 2. Debajo del pin 1 está el pin 3, a la derecha está el pin 4, y así sucesivamente.

Asignación de pines de frambuesa piDistribución de pines de la Raspberry Pi

  1. Encienda su Raspberry Pi y abra la terminal. Usar cd para pasar al directorio de la secuencia de comandos de Python, luego ingrese python3 rpi-pushbutton.py. Si usó un nombre de archivo diferente, utilícelo en lugar de «rpi-pushbutton».

Terminal Cd Python3 Rpi Pulsador

  1. Deberías ver una nueva línea de texto que diga Pin 7 is LOW... cada 0,15 segundos en el terminal. Si presiona el botón, la nueva línea será Pin 7 is HIGH!.

Si cambia los pines GND y 3.3V, con 3.3V en la resistencia y GND en el otro lado del botón, invertirá la lógica del botón. Saldrá Pin 7 is HIGH! todo el tiempo y convertirse Pin 7 is LOW cuando presionas el botón.

Pulsador Pull Up Vs Pull Down ResistenciasIzquierda: Se fabrica una resistencia desplegable conectando un pin 7 (marrón) GND (negro). Derecha: Conectar 3.3V (rojo) al pin 7 (marrón) crea una resistencia pull-up en su lugar.

Hardware en pulsadores

Los pulsadores utilizan dos tipos de resistencias: pull-up y pull-down. El que tiene 3,3 V conectado a la resistencia es una resistencia pull-up. Tira de la tensión hacia arriba. Mientras tanto, las resistencias desplegables reducen el voltaje al tener un pin GND conectado a ellas.

Todavía puede usar un botón sin resistencia, pero al hacerlo, su pin GPIO flotará. Un pin GPIO flotante no recibe carga eléctrica directa, por lo que busca cargas en su entorno. Si hay un fuerte campo electromagnético cerca, por ejemplo, lo medirá.

Circuito de pulsador sin resistenciaEl pin 7 (marrón) se convierte en un pin flotante cuando se separan 3,3 V (rojo).

Es por eso que necesita un punto de referencia. Si conecta el pin GPIO a 0V (GND) de forma predeterminada, medirá 0V mientras el botón no esté presionado. Pero si no lo hace, el valor del pin GPIO puede estar en cualquier lugar, ¡incluso en voltios negativos!

Sin embargo, los pines flotantes pueden hacer algunas cosas interesantes. Si deja un alfiler flotando, puede sentir la diferencia de voltaje en el aire, midiendo incluso el efecto de mover el dedo cerca del alfiler. Es como un sensor de presencia electromagnético o algo así.

Sin embargo, es una lástima que no puedas hacer eso en la Raspberry Pi. Para que eso sea útil, necesitará pines analógicos y la Raspberry Pi no los tiene.

Código para pulsadores

Sabiendo eso, debe comprender que el pin 7 detecta si pasan 3.3V o 0V a través de él. Si detecta 3,3 V, se informa como ALTO. Pero si detecta 0V, entonces es BAJO.

Dividamos el código en tres partes: comandos de importación, comandos de configuración y comandos en bucle.

Comandos de importación

Estamos usando dos comandos de importación:

import RPi.GPIO as GPIO
from time import sleep

import RPi.GPIO as GPIO importa el módulo RPi.GPIO, que le permite hacer cosas con los pines GPIO de su Raspberry Pi. Al agregar as GPIO al final, le estás diciendo a Python que diga eso escribiendo GPIO es equivalente a escribir RPi.GPIO. Incluso puede reemplazarlo con otras cadenas, y el código aún debería funcionar siempre que lo formatee correctamente.

Por otro lado, from time import sleep importa solo una parte del módulo de tiempo de Python. Te permite usar el sleep() función.

Comandos de configuración

Estamos trabajando con los tres comandos del módulo RPi.GPIO en los comandos de configuración para corregir algunas configuraciones.

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

El módulo RPi.GPIO normalmente muestra un mensaje que le advierte sobre el uso de los pines GPIO tan pronto como inicia el script de Python. GPIO.setwarnings(False) evita que eso suceda.

GPIO.setmode(GPIO.BOARD) es otro comando del módulo RPi.GPIO. Le dice a Python que estás usando el pinout «BOARD». Hay dos tipos de pinout en RPi.GPIO: BOARD y BCM. BOARD te permite elegir pines usando los números de pin. BCM (abreviatura de «Broadcom») le permite elegir pines con su canal SOC de Broadcom individual. BOARD es mucho más fácil de usar, ya que siempre es el mismo sin importar qué tipo de placa Raspberry Pi utilice. El pinout del BCM puede cambiar según el modelo que utilice.

Por último, GPIO.setup(7, GPIO.IN) le permite configurar el pin 7 como un pin de entrada. utiliza el .setup() funciona y lee 7 como el pin que está tratando de elegir. GPIO.IN significa que está tratando de configurar eso como un pin de entrada.

Comandos en bucle

Los sistemas integrados normalmente solo usan unas pocas líneas de código y las repiten indefinidamente. Diferentes lenguajes de programación usan diferentes formas de hacerlo. Pero el concepto es el mismo: utilizan una especie de bucle. Para Python, eso es while True:.

while True:
  if GPIO.input(7) == GPIO.HIGH:
    print("Pin 7 is HIGH!")
  elif GPIO.input(7) == GPIO.LOW:
    print("Pin 7 is LOW...")
  sleep(0.15)

while True: le permite repetir el código indefinidamente. Todo lo que coloques en él funcionará para siempre mientras haya electricidad en el tablero.

if GPIO.input(7) == GPIO.HIGH: es una sentencia if. Dice que si el pin 7, que es un pin de entrada, se lee como HIGHentonces debería hacer todo dentro de él.

print("Pin 7 is HIGH!") está dentro de una instrucción if. Todo lo que hace es imprimir Pin 7 is HIGH! en la consola Puede reemplazar eso con cualquier cadena, número o variable que los contenga.

El siguiente es elif GPIO.input(7) == GPIO.LOW:. Es básicamente lo mismo que if GPIO.input(7) == GPIO.HIGH: excepto por la primera parte: utiliza elif en vez de if. El código elif significa Else If. Lo que dice es que si todo el otro código anterior devuelve falso, entonces Python debería ejecutar esta declaración else-if.

Por último, sleep(0.15) detiene el código durante 0,15 segundos. ¿Por qué pausar el código en absoluto? Es principalmente por problemas de rendimiento. El Raspberry Pi enviará el código de salida tan rápido que hará que su GUI se retrase un poco. Es aún más pronunciado si está utilizando su Raspberry Pi a través de SSH. Habrá un retraso notable que empeorará con el tiempo. Pausar el código lo ralentiza para evitar problemas de rendimiento.

Preguntas frecuentes

¿Es seguro intercambiar pines en caliente en la Raspberry Pi?

El intercambio en caliente, o el reemplazo de los pines de la Raspberry Pi mientras está encendido, generalmente es una mala idea. Siempre es más seguro quitarlo de la fuente de alimentación antes de cambiar.

¿Qué hace que los botones de 4 pines sean mejores que los de 3 pines?

En cuanto a la utilidad, son básicamente lo mismo. Pero tener cuatro pines le permite conectar el botón pulsador de 4 pines a otro botón pulsador en un circuito en serie.

¿Puedo convertir cualquier pin en la Raspberry Pi como pin de entrada?

El Raspberry Pi puede tener 40 pines, pero solo 27 de ellos son GPIO. Solo puede programar pines GPIO en pines de entrada y salida. La mayoría de los IDE no le permitirán reprogramar un pin que no sea GPIO en un pin de entrada.

Todas las fotos y capturas de pantalla por Terenz Jomar Dela Cruz

¿Le ha parecido útil este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.