【问题标题】:Raspberry pi gpio pins are stuck in the "in" and "high" modeRaspberry pi gpio 引脚卡在“in”和“high”模式
【发布时间】:2018-10-03 01:33:41
【问题描述】:

我在 Raspberry Pi 2 上运行 Raspbian Stretch。我试图构建一个基本的避障漫游车,但遇到了电机问题。 示意图在这里找到:

我没有 DC-DC 转换器,我有一个带有 330 欧姆电阻的 LED 连接到引脚 17。

我正在使用这段代码来运行它:

from gpiozero import LED
from gpiozero import Motor
import RPi.GPIO as GPIO
from time import sleep

# prereqs
GPIO.setmode(GPIO.BCM)
Motorbin = 5
Motorbout = 6
GPIO.setup(Motor2in,GPIO.OUT)
GPIO.setup(Motor2out,GPIO.OUT)

led = LED(17)

for i in range(2):
    led.on()
    sleep(0.5)
    led.off()
    sleep(0.5)



# motors are going to start running now

motora = Motor(27, 22)
motora.forward()
sleep(5)
motora.backward()
sleep(5)
motora.stop()

for i in range(2):
    led.on()
    sleep(0.5)
    led.off()
    sleep(0.5)

motorb = (5, 6)
motorb.forward()
sleep(5)
motorb.backward()
sleep(5)
motorb.stop()

GPIO.cleanup

我运行了代码,我的 LED 闪烁了两次,第一个电机 (motora) 前后移动,但第二个电机 (motorb) 根本没有移动。我运行了终端命令“gpio readall”,发现我的第二个电机正在运行的引脚(BCM 5、6)设置为“IN”,并且都设置为“1”。

gpio readall 的终端输出

我尝试使用 GPIO.setup 命令将引脚 5 和 6 更改为输出引脚,但它仍然保持不变。我还尝试使用终端命令将引脚的输出从高更改为低,但没有任何反应。 GPIO 引脚似乎卡在此模式下。

有没有办法修复这些卡住的 GPIO 引脚?在这种情况下我做对了吗?

任何帮助将不胜感激!

【问题讨论】:

标签: python raspberry-pi gpio gpiozero


【解决方案1】:

您的代码通过

设置电机 A
motora = Motor(27, 22)

但是电机B是由

设置的
motorb = (5, 6).

不应该是类似的设置

motorb = Motor(5, 6)?

【讨论】:

  • 是的,谢谢你发现,这是我犯的一个愚蠢的错误。之后我的两个电机都工作了。
  • 这不是一个愚蠢的错误。这对于 Python 和 OOP 的初学者来说很常见。当我阅读语句“motora = Motor(27, 22)”时,我看到一个带有 gpio 引脚 27、22 的电机对象,它属于“Motor”类,方法为“forward”等。当我阅读“motorb = (5, 6 )",我看到一个元组 "motorb" 有两个整数 5、6(不是 gpio 引脚号!)。对于这个元组,你可以处理两个整数,但你不能要求元组为你驱动电机!所以如果你看不到语句背后的意思,你就很难看出其中的不同。
猜你喜欢
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2015-05-31
相关资源
最近更新 更多