【问题标题】:How to use the Adafruit_BBIO module with python3?如何在 python3 中使用 Adafruit_BBIO 模块?
【发布时间】:2020-06-10 01:41:54
【问题描述】:

我正在尝试在 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'_ 

【问题讨论】:

  • 如果可以的话请出示代码,方便我们。
  • 当我导入模块 'import Adafruit_BBIO' root@arm:/home/debian/python# python3 main.py Traceback(最近一次调用最后)时错误出现:文件“main.py” ,第 8 行,在 中 import lcd_control File "/home/debian/python/lcd_control.py",第 3 行,在 中 import Adafuit_BBIO.GPIO as GPIO ImportError: No module named 'Adafuit_BBIO' 这是输出我得到了
  • 抱歉我的格式错误:3
  • 请编辑您的问题并添加此信息,而不是用 cmets 书写!
  • 试试这个import Adafruit_BBIO.GPIO as GPIO

标签: python python-3.x beagleboneblack


【解决方案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)

【讨论】:

  • 在我的 /usr/class/gpio/ 中有四个文件夹,gpiochip0、32、64 和 gpiochip96。它们中的每一个都包含“基本标签 ngpio 电源子系统 uevent”
  • 它可能在其他地方......只是谷歌通过树莓派上的文件系统访问 gpio
  • 本教程可能对文件系统部分有所帮助...sites.google.com/site/semilleroadt/raspberry-pi-tutorials/gpio
【解决方案2】:

太棒了!感谢 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 osos.system("echo %d &gt; /sys/class/gpio/export..... 我猜你发帖时它也做了同样的事情,这就是它没有的原因不能马上为我工作。

非常感谢!我真的不喜欢使用Adafruit 模块,因为它不能直接用于python3,而且我通过完成这个工作并让代码工作,学到了很多关于如何使用GPIO 的知识。

【讨论】:

    【解决方案3】:

    为了更新这个问题,现在可以在 Debian "buster" 中为 python3 安装 Adafruit_GPIO:

    pip3 install Adafruit-GPIO
    

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

    【讨论】:

      猜你喜欢
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 2014-05-23
      • 2021-12-30
      • 2019-06-22
      • 2015-01-20
      相关资源
      最近更新 更多