Как активировать моторы с помощью Raspberry и L289n - PullRequest
0 голосов
/ 20 октября 2019

У меня проблемы с моим Raspberry Pi3B +. Прежде всего, я хочу управлять двумя моторами, используя Raspberry Pi и L289n MotorDriver. Моя главная проблема в том, что двигатели не запускаются ... Если я использую свой мультиметр, он говорит, что на двигатели не поступает электричество. Тем не менее, это может быть код или даже схема, я действительно не знаю. Поэтому я решил спросить ее и загрузить не только мой код, но и мою схему в виде картинки. Может быть, вы можете помочь мне.

import time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

#Motor 1
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27,GPIO.OUT)
GPIO.output(17, 0)
GPIO.output(27, 0)


#Motor 2
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24,GPIO.OUT)
GPIO.output(23, 0)
GPIO.output(24, 0)

#Control Motor 1
GPIO.output(27, 1)
GPIO.output(17, 0)

#Control Motor 2
GPIO.output(23, 0)
GPIO.output(24, 1)

1 Ответ

1 голос
/ 20 октября 2019

Вы можете попробовать следующее:


import RPi.GPIO as GPIO
from time import sleep

in1 = 17
in2 = 27
en = 25
temp1 = 1

GPIO.setmode(GPIO.BCM)
GPIO.setup(in1, GPIO.OUT)
GPIO.setup(in2, GPIO.OUT)
GPIO.setup(en, GPIO.OUT)
GPIO.output(in1, GPIO.LOW)
GPIO.output(in2, GPIO.LOW)
p = GPIO.PWM(en, 1000)
p.start(25)
print("\n")
print("The default speed & direction of motor is LOW & Forward.....")
print("r-run s-stop f-forward b-backward l-low m-medium h-high e-exit")
print("\n")

while True:
    x = raw_input()
    if x == 'r':
        print("run")
        if (temp1 == 1):
            GPIO.output(in1, GPIO.HIGH)
            GPIO.output(in2, GPIO.LOW)
            print("forward")
            x = 'z'
        else:
            GPIO.output(in1, GPIO.LOW)
            GPIO.output(in2, GPIO.HIGH)
            print("backward")
            x = 'z'
    elif x == 's':
        print("stop")
        GPIO.output(in1, GPIO.LOW)
        GPIO.output(in2, GPIO.LOW)
        x = 'z'
    elif x == 'f':
        print("forward")
        GPIO.output(in1, GPIO.HIGH)
        GPIO.output(in2, GPIO.LOW)
        temp1 = 1
        x = 'z'
    elif x == 'b':
        print("backward")
        GPIO.output(in1, GPIO.LOW)
        GPIO.output(in2, GPIO.HIGH)
        temp1 = 0
        x = 'z'
    elif x == 'l':
        print("low")
        p.ChangeDutyCycle(25)
        x = 'z'
    elif x == 'm':
        print("medium")
        p.ChangeDutyCycle(50)
        x = 'z'
    elif x == 'h':
        print("high")
        p.ChangeDutyCycle(75)
        x = 'z'
    elif x == 'e':
        GPIO.cleanup()
        break
    else:
        print("<<<  wrong data  >>>")
        print("please enter the defined data to continue.....")

Если вы внимательно посмотрите на код, вы легко поймете, как это работает. Запустите скрипт.

Вы получите сообщение о скорости и направлении двигателя по умолчанию. Далее следует список команд, которые вы должны использовать для управления двигателем. Эти команды приведены ниже.

  • r - запустить (запустить или запустить двигатель)
  • s - остановить (остановить двигатель)
  • f - перейти вперед(для запуска двигателя в прямом направлении) - направление по умолчанию
  • b - назад (для изменения направления вращения)
  • l - низкий (для снижения скорости до 25%) - скорость по умолчанию
  • м - средний (для запуска двигателя на средней скорости 50%)
  • ч - высокий (для повышения скорости до уровня 75%)
  • е - выход (доостановите двигатель и выйдите из Python)

Источник - Raspberry Pi L298N Интерфейс Учебное пособие

...