Cómo usar GPIO ZERO en su frambuesa Pi

  1. Ordenadores
  2. Pieza de frambuesa
  3. Cómo usar GPIO ZERO en su frambuesa Pi

Libro Relacionado

Por Sean McManus, Mike Cook

Hay un nuevo chico en el bloque cuando se trata de acceder a los pines GPIO en Python en tu frambuesa Pi: la biblioteca GPIO Zero. No confundas esto con el Pi Zero – los dos no están relacionados. La librería GPIO Zero toma el método de clase para el control, a diferencia del método de función de RPi.GPIO y otras librerías similares. Los pines se convierten en objetos Python, que deben colocarse antes de su uso. A pesar de esta complicación, el uso de este sistema es fácil. Por ejemplo, para un ejemplo de parpadeo de un LED, puede utilizar este código

#!/usr/bin/python3

tiempo de importación, os

importar gpiozero como io # usando el LED zero

led = io.LED(4) # convertir el pin 4 en una salida

print(“LED blinker using gpiozero – By Mike Cook”)

print(“Ctrl C para salir”)

mientras que True:

led.on()

Hora.de.dormir(0.30)

led.off()

Hora.de.dormir(0.30)

La biblioteca sólo utiliza el método BCM de numeración de pines, por lo que no hay necesidad de decirle a la biblioteca qué sistema utilizar. Un pin de salida se conoce como LED, independientemente de si ese pin controla un LED, un motor o un chip. Por lo tanto, la línea que hace del pin una salida es io.LED(4). Este segmento de código devuelve una referencia al objeto de clase. Las clases y los objetos son una forma de obtener el mismo código para manejar diferentes objetos específicos – en este caso en particular, diferentes pines GPIO.

Para saber lo que tiene que hacer, cada cosa/pin debe ser declarada por separado, y cuando lo es, el programa obtiene un número de código para identificar qué cosa específica tiene que manejar. Ese número de código se coloca en una variable llamada led en el código anterior, pero podría llamarse cualquier cosa. La clase tiene métodos asociados -cosas que puede hacer, en otras palabras- y éstos se llaman escribiendo el nombre de la variable de referencia de la instancia, seguido de un punto o punto, seguido del nombre del método.

Por lo tanto, encender o apagar un LED es un proceso simple – sólo tienes que escribir led.on() o led.off(). Sin embargo, en cierto modo, esto es un poco limitante. Por ejemplo, no se puede enviar un número en una variable que se utiliza para encender o apagar el LED – tiene que ser específicamente deletreado como un nombre de método. Esta es una limitación de cómo se escribe GPIO Zero, no una limitación de uso de clases. Hay formas de evitarlo, pero en este punto, el sistema simple se vuelve bastante complejo.

De hecho, el código de arriba está escrito de una manera que se parece mucho a los listados anteriores. La misma cosa podría simplemente ser escrita como se muestra.

import gpiozeroled = LED(4)

led.blink()

Y eso es todo lo que necesitas. Esta última afirmación puede contener algunos parámetros para controlar la velocidad de parpadeo, por ejemplo, para que coincida exactamente con nuestros otros ejemplos que podría ser la última línea:

led.blink(on_time = 0.3, off_time = 0.3)

Esta biblioteca tiene aún más trucos bajo la manga. Si desea desvanecer ese LED hacia arriba y hacia abajo en lugar de simplemente parpadear, la última línea podría decir

led.blink(on_time = 2.0, off_time = 2.0, fade_in_time = 1.0, fade_out_time = 1.0)

Esto es genial si sólo quieres hacer eso, y para un principiante muy joven, eso es exactamente lo que quieres hacer.

La velocidad de parpadeo controlada por un botón se puede escribir así.

#!/usr/bin/python3

tiempo de importación, os

importar gpiozero como io # usando GPIO Zero

led = io.LED(4) # convertir el pin 4 en una salida

push = io.Button(24) # convierte el pin 24 en una entrada

print(“Interruptor intermitente LED usando gpiozero – Por Mike Cook”)

print(“Ctrl C para salir”)

mientras que True:

led.on()

si push.is_pressed:

Hora.de.dormir(0.30)

si no..:

Hora.de.dormir(1.00)

led.off()

si push.is_pressed:

Hora.de.dormir(0.30)

si no..:

Hora.de.dormir(1.00)

La entrada funciona de forma similar a la salida. En este caso, se hace una instancia de la clase Button y se pone su referencia en la pulsación de la variable. Luego se utiliza el método is_pressed de esta clase para determinar el tiempo de retardo en el parpadeo. Por defecto, la resistencia pull-up de entrada se activa cuando se crea la referencia de clase.

Hay otras opciones contenidas en esta clase de entrada. Puede especificar si una rotativa se repetirá automáticamente o si se especificará un tiempo de rebote – el tiempo después de un cambio para ignorar más cambios. Así como el método is.pressed, otros métodos de clase incluyen is_held, wait_for_press, wait_for_release, is_held, when_held, when_pressed, and when_released.

En lugar de devolver información sobre la entrada, estas dos últimas hacen que se ejecute una función cuando se pulsa o se suelta el botón. Esta otra función se ejecuta en un hilo de rosca separado – en efecto, otro programa separado – con este hilo de rosca y el código principal que es intercambiado alternativamente dentro y fuera hasta que la función es completa. Esto le da a un principiante acceso a conceptos complejos que necesitan entender sólo cuando algo sale mal. Por lo tanto, nuestro programa de tasa de bits controlada podría ser escrito como se muestra.

#!/usr/bin/python3

importar gpiozero como io # usando el LED zero

de la señal pausa de importación

led = io.LED(4) # convertir el pin 4 en una salida

push = io.Button(24) # convierte el pin 24 en una entrada

def blinkFast():

led.blink(on_time = 0.3, off_time = 0.3)

def blinkSlow():

led.blink(on_time = 1.0, off_time = 1.0)

push.when_pressed = blinkFast

push.when_released = blinkSlow

pausa()

La función de pausa, en efecto, termina el programa, y lo único que sucede es cuando las funciones de devolución de llamada, como se las llama, son invocadas o activadas al presionar o soltar el botón.

Gran parte del trabajo de programación que implica el uso de GIPO Zero consiste en hojear la documentación para ver qué funciones sencillas han implementado los autores para usted. GPIO Zero le permite obtener resultados rápidamente, y sin necesidad de entender mucho de lo que está sucediendo – lo cual es útil si una función hace lo que usted necesita. Sin embargo, aunque algunas cosas se pueden hacer de manera sencilla, las habilidades aprendidas no son exactamente transferibles. A medida que desarrolle proyectos electrónicos más complejos, es posible que encuentre que GPIO Zero es demasiado limitado para sus necesidades.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *