如何在python3中使用Adafruit_BBIO模块?

问题描述 投票:1回答:3

我正在尝试使用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'_ 
python python-3.x beagleboneblack
3个回答
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)

1
投票

很棒!谢谢乔兰,这已经有了很大的帮助。您的代码最初对我不起作用,我不得不做一些调整:这就是我现在使用的内容,并导入到其他简单程序中以使用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 osos.system("echo %d > /sys/class/gpio/export.....中缺少的同一行,我猜您发布时它也做了相同的操作,这就是为什么它没有立即为我工作。

感谢一堆!我真的不喜欢必须使用Adafruit模块,因为它无法直接用于python3,而且我仅通过研究并使代码正常工作,就学到了很多关于如何使用GPIO的知识。


0
投票

为了使这个问题保持最新,下面的工作现在可以在Debian“ buster”中为python3安装Adafruit_GPIO:

pip3 install Adafruit-GPIO

project history,他们进行了更新以使其在2019年4月与Python 3兼容。

© www.soinside.com 2019 - 2024. All rights reserved.