Red de conocimiento informático - Conocimiento de la instalación - Habilidades de aplicación avanzadas de la parte de entrada GPIO de Raspberry Pi

Habilidades de aplicación avanzadas de la parte de entrada GPIO de Raspberry Pi

Esta es una aplicación avanzada de la función de entrada RPI.GPIO en Raspberry Pi Basics. Para un uso sencillo de GPIO, consulte la publicación del blog Uso de entrada/salida de Raspberry Pi 3B GPIO.

> Hay varios métodos para importar información de entrada GPIO a su programa.

Si un pin de entrada no tiene ningún componente conectado, estará "flotante". En otras palabras, dado que no hay componentes conectados, el valor leído no tiene sentido hasta que se presiona el botón o interruptor. Debido a fluctuaciones en el suministro eléctrico, los valores leídos pueden variar significativamente.

Para solucionar este problema necesitamos utilizar resistencias pull-up/pull-down. De esta manera, podemos establecer el valor predeterminado para la entrada. Aquí, se puede utilizar hardware o software para subir o bajar resistencias. Cuando se utiliza hardware, la práctica común es conectar una resistencia de 10 K entre el canal de entrada y 3,3 V (pull-up) o 0 V (pull-down). RPi.GPIO también le permite configurar Broadcom SOC en el software para esta funcionalidad:

o

Los números de canal se asignan según el sistema de numeración utilizado (BOARD o BCM).

Un flanco se define como un cambio en el estado de una señal eléctrica de bajo a alto (umbral ascendente) o de alto a bajo (umbral descendente). Por lo general, para los valores de entrada, nos preocupa más si el estado de la entrada ha cambiado. Este cambio de estado es muy importante.

Para evitar perder un botón mientras el programa está ocupado con otras cosas, hay dos formas de resolver este problema:

Ejecutar la función de devolución de llamada del hilo cuando se detecta un borde

p>

Tenga en cuenta que los bordes se pueden detectar ingresando GPIO.RISING, GPIO.FALLING o GPIO.BOTH. La ventaja de este enfoque es que utiliza muy pocos recursos de CPU, por lo que el sistema tiene muchos recursos disponibles para otras cosas.

RPi.GPIO ejecuta la función de devolución de llamada en el segundo hilo. Esto significa que la función de devolución de llamada puede ejecutarse simultáneamente con el programa principal y responder al borde inmediatamente. Por ejemplo:

Si se requieren múltiples funciones de devolución de llamada:

Tenga en cuenta que en este ejemplo, las funciones de devolución de llamada se ejecutan secuencialmente, no simultáneamente. Esto se debe a que solo hay un proceso disponible para devoluciones de llamada y las devoluciones de llamada se ejecutan en el orden en que están definidas.

Puedes notar que la acción de devolución de llamada se llama más de una vez cada vez que se presiona el botón. Este fenómeno se llama "rebote de cambio". Aquí hay dos formas de resolver el problema de salto de conmutación:

o

Si por alguna razón no desea que el programa detecte eventos de borde, puede detenerlo:

Enlace al texto original

Enlace a la página de referencia