如何在Python3中使用Adafruit_BBIO模块?
我正在尝试在Beaglebone Black上使用GPIO引脚。我在尝试书中的一些代码示例时使用了Adafruit_BBIO.GPIO
模块。之后,我用python3编写了整个逻辑,但它无法访问这个模块。我想问一下,有没有人知道如何用python3访问这个模块。
我已经尝试把Adafruit_BBIO目录复制到我的python3文件夹里,但没有成功。
'#!/usr/bin/python3
import Adafruit_BBIO'
当我像这样调用主脚本时
root@arm: python3 main.py
我收到了这个错误:
_Traceback (most recent call last): File "main.py", line 8, in <module> import lcd_control File "/home/debian/python/lcd_control.py", line 3, in <module> import Adafuit_BBIO.GPIO as GPIO ImportError: No module named 'Adafuit_BBIO'_
3 个回答
0
为了让这个问题更清楚,下面的方法现在可以在Debian "buster"上为python3安装Adafruit_GPIO:
pip3 install Adafruit-GPIO
从项目历史来看,他们在2019年4月进行了更新,以支持Python 3。
1
太棒了!谢谢你,Joran,这对我帮助很大。一开始你的代码对我没用,我做了一些调整:现在我用的代码是这样的,可以导入到其他简单的程序中来使用GPIO:
import os
class SimpleGPIO:
def __init__(self,gpio_pin):
self.gpio_pin = gpio_pin
os.system("echo %d > /sys/class/gpio/export" % self.gpio_pin)
self.gpio_path = "/sys/class/gpio/gpio%d/"%gpio_pin
with open(self.gpio_path+"direction") as f:
self.direction = f.read()
def write(self,value):
if self.direction != "out":
os.system("echo out > %sdirection"%self.gpio_path)
self.direction = "out"
os.system("echo %s > %svalue"%(value,self.gpio_path))
def read(self):
if self.direction != "in":
os.system("echo in > %sdirection"%self.gpio_path)
self.direction = "in"
with open(self.gpio_path+value) as f:
return f.read()
现在,我只需要在开头加上 from gpio import SimpleGPIO
就可以重复使用这段代码了。
我发现当我把代码粘贴到这个帖子里时,似乎把你缺少的那一行也去掉了,import os
和 os.system("echo %d > /sys/class/gpio/export.....
我猜你发帖的时候也发生了同样的事情,所以一开始对我来说没法用。
非常感谢!我真的不喜欢使用 Adafruit
模块,因为它不能直接在 python3
中工作,而且通过这个过程我学到了很多关于如何使用 GPIO
的知识,终于让代码能运行起来了。
1
你可以通过访问以下链接来了解你的GPIO(通用输入输出接口)信息:
$ ls /sys/class/gpio/gpio100 ;or whatever your gpiopin is
然后在Python中使用:
class SimpleGPIO:
def __init__(self,gpio_pin):
self.gpio_pin = gpio_pin
self.gpio_path = "/sys/class/gpio/gpio%d/"%gpio_pin
with open(self.gpio_path+"direction") as f:
self.direction = f.read()
def write(self,value):
if self.direction != "out":
os.system("echo out > %sdirection"%self.gpio_path)
self.direction = "out"
os.system("echo %s > %svalue"%(value,self.gpio_path)
def read(self):
if self.direction != "in":
os.system("echo in > %sdirection"%self.gpio_path)
self.direction = "in"
with open(self.gpio_path+value) as f:
return f.read()
gpio_100 = SimpleGPIO(100) #open on 100
gpio_100.write(1)