banner

Noticias

Jun 05, 2023

Cómo usar botones con pines GPIO de Raspberry Pi

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!

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.

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.

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.

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.

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.

Consejo: 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.

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. ¡Emitirá que el Pin 7 sea ALTO! todo el tiempo y convertirse en Pin 7 es BAJO cuando presiona el botón.

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á.

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.

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.

Estamos usando dos comandos de importación:

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 como GPIO al final, le está diciendo a Python que escribir 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 la función sleep().

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

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 pin de entrada. Utiliza la función .setup() y lee 7 como el pin que intenta elegir. GPIO.IN significa que está intentando configurarlo como un pin de entrada.

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: te 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 ALTO, entonces debería hacer todo lo que hay dentro.

print("¡El pin 7 es ALTO!") está dentro de una declaración if. ¡Todo lo que hace es imprimir el pin 7 es ALTO! 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:. Básicamente es lo mismo que si GPIO.input(7) == GPIO.HIGH: excepto por la primera parte: usa elif en lugar 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.

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.

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.

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

Terenz es un robotista aficionado que intenta construir el robot más impresionante que el mundo haya visto jamás. Podría haberlo hecho ya si no estuviera tan ocupado quemando LED como un segundo pasatiempo.

Nuestros últimos tutoriales enviados directamente a su bandeja de entrada

Cómo crear, personalizar y editar listas en Google Docs

Cómo agregar una marca de agua en Microsoft Excel

Cómo usar el formato condicional en Microsoft Outlook

Cómo guardar una ruta en Google Maps

6 formas de comprobar el estado del disco duro en Windows

5 formas de crear y compartir un enlace de perfil de WhatsApp

¿Las imágenes de Facebook no se cargan? Aquí están las correcciones

Cómo arreglar los nombres de los contactos que no se muestran y aparecen como números en iOS

Divulgación de afiliados:Make Tech Easier puede ganar una comisión sobre los productos comprados a través de nuestros enlaces, lo que respalda el trabajo que hacemos para nuestros lectores.

Consejo: Divulgación de afiliados:
COMPARTIR