還記得上一篇的硬體接線嗎?我們把樹莓派的PIN7, 11, 13, 15分別接到馬達驅動板上的IN1~IN4接腳。也就是使用PIN7和PIN11控制了馬達A,而PIN13和PIN15用來控制馬達B,其中這2個輸入端的高電位和低電位的組合,決定了馬達是要正轉、反轉還是停止。而對於這些PIN腳的輸出動作,則可以使用Python語言輕易達成。先來看看成果:

我們在這裡寫了一支Python程式car,程式內容如下:

#! /usr/bin/python

import RPi.GPIO as gpio
import sys

gpio.setwarnings(False)
gpio.setmode(gpio.BOARD)
gpio.setup(7, gpio.OUT)
gpio.setup(11, gpio.OUT)
gpio.setup(13, gpio.OUT)
gpio.setup(15, gpio.OUT)

if len(sys.argv)<=1:
    cmd = 'stop'
else:
    cmd = sys.argv[1]

print(cmd)

if cmd == 'go' or cmd =='g':
    gpio.output(7, True)
    gpio.output(11, False)
    gpio.output(13, True)
    gpio.output(15, False)
elif cmd == 'stop' or cmd =='s':
    gpio.output(7, False)
    gpio.output(11, False)
    gpio.output(13, False)
    gpio.output(15, False)
elif cmd == 'back' or cmd =='b':
    gpio.output(7, False)
    gpio.output(11, True)
    gpio.output(13, False)
    gpio.output(15, True)
elif cmd == 'right' or cmd =='r':
    gpio.output(7, True)
    gpio.output(11, False)
    gpio.output(13, False)
    gpio.output(15, True)
elif cmd == 'left' or cmd =='l':
    gpio.output(7, False)
    gpio.output(11, True)
    gpio.output(13, True)
    gpio.output(15, False)
else:
    gpio.output(7, False)
    gpio.output(11, False)
    gpio.output(13, False)
    gpio.output(15, False)

接著把此程式使用chmod設定為可執行檔,再複製到/usr/bin底下,如下:

$ sudo chmod +x car
$ sudo cp car /usr/bin

以上的動作完成後,就可以像影片上展示的一樣,使用car這個命令,加上stop就是停車、「car go」就是前進,而「car right」就是右轉,依此類推。其實,如果要讓遙控的動作快一些,還可以把上述的程式加上一個無窮迴圈取得命令直接輸出,如下所示:

#! /usr/bin/python

import RPi.GPIO as gpio

gpio.setwarnings(False)
gpio.setmode(gpio.BOARD)
gpio.setup(7, gpio.OUT)
gpio.setup(11, gpio.OUT)
gpio.setup(13, gpio.OUT)
gpio.setup(15, gpio.OUT)

while True:
    cmd = raw_input("Enter your command ('q' to exit):")
    if cmd == 'q':
        break
    if cmd == 'go' or cmd =='g':
        gpio.output(7, True)
        gpio.output(11, False)
        gpio.output(13, True)
        gpio.output(15, False)
    elif cmd == 'stop' or cmd =='s':
        gpio.output(7, False)
        gpio.output(11, False)
        gpio.output(13, False)
        gpio.output(15, False)
    elif cmd == 'back' or cmd =='b':
        gpio.output(7, False)
        gpio.output(11, True)
        gpio.output(13, False)
        gpio.output(15, True)
    elif cmd == 'right' or cmd =='r':
        gpio.output(7, True)
        gpio.output(11, False)
        gpio.output(13, False)
        gpio.output(15, True)
    elif cmd == 'left' or cmd =='l':
        gpio.output(7, False)
        gpio.output(11, True)
        gpio.output(13, True)
        gpio.output(15, False)
    else:
        gpio.output(7, False)
        gpio.output(11, False)
        gpio.output(13, False)
        gpio.output(15, False)

現在我們會利用指令來遙控這台車。下一篇,即將整合網站控制和視訊功能,敬請期待。

(4019)

%d 位部落客按了讚: