The Adafruit_BBIO
library is structured differently than PyBBIO
. While PyBBIO
is structured such that, essentially, the entire API is accessed directly from the first level of the bbio
package; Adafruit_BBIO
instead has the package tree broken up by a peripheral subsystem. For instance, to use the GPIO API you have to import the GPIO package:
from Adafruit_BBIO import GPIO
Otherwise, to use the PWM API you would import the PWM package:
from Adafruit_BBIO import PWM
This structure follows a more standard Python library model, and can also save some space in your program's memory because you're only importing the parts you need (the difference is pretty minimal, but it is worth thinking about).
The same program shown above using PyBBIO
could be rewritten to use Adafruit_BBIO
:
from Adafruit_BBIO import GPIO import time GPIO.setup("GPIO1_16", GPIO.OUT) try: while True: GPIO.output("GPIO1_16", GPIO.HIGH) time.sleep(0.5) GPIO.output("GPIO1_16", GPIO.LOW) time.sleep(0.5) except KeyboardInterrupt: GPIO.cleanup()
Here the GPIO.setup()
function is configuring the ping
, and GPIO.output()
is setting the state. Notice that we needed to import Python's built-in time library to sleep, whereas in PyBBIO we used the built-in delay()
function. We also needed to explicitly catch KeyboardInterrupt
(the Ctrl + C signal) to make sure all the cleanup is run before the program exits, whereas this is done automatically by PyBBIO
. Of course, this means that you have much more control about when things such as initialization and cleanup happen using Adafruit_BBIO
, which can be very beneficial depending on your program. There are some trade-offs, and the library you use should be chosen based on which model is better suited for your application.
18.188.98.148