Штыри Raspberry pi gpio застряли в режиме "in" и "high"

Я использую Raspbian Stretch на Raspberry Pi 2. Я пытался построить базовый марсоход для обхода препятствий и столкнулся с проблемой с моторами. Схема найдена здесь:

У меня нет преобразователя постоянного тока, и у меня есть светодиод с резистором 330 Ом, подключенный к контакту 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

Я запустил код, и мой светодиод дважды мигнул, первый мотор (мотор) двигался вперед и назад, но второй мотор (мотор) вообще не двигался. Я выполнил команду терминала "gpio readall" и обнаружил, что контакты, на которых работает мой второй двигатель (BCM 5, 6), были установлены на "IN", и оба были установлены на "1".

терминальный вывод gpio readall

Я попытался с помощью команды GPIO.setup изменить вывод 5 и 6 на выходной, но он остался прежним. Я также попытался использовать команду терминала, чтобы изменить вывод выводов с высокого на низкий, но ничего не произошло. В этом режиме контакты GPIO застряли.

Есть ли способ исправить эти застрявшие контакты GPIO? И правильно ли я поступаю в этом случае?

Любая помощь будет принята с благодарностью!

1 ответ

Решение

Ваш код настраивает мотор А

motora = Motor(27, 22)

Но Мотор B настроен

motorb = (5, 6).

Разве это не должно быть аналогичным

motorb = Motor(5, 6)?
Другие вопросы по тегам