還記得上一篇的硬體接線嗎?我們把樹莓派的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)
現在我們會利用指令來遙控這台車。下一篇,即將整合網站控制和視訊功能,敬請期待。
(10093)
你好 我想問一下 我做到打完程式 要將car.py檔複製到/usr/bin時 他說我權限不夠 無法複製過去
請問該如何處理???
用sudo指令切換到root權限喔!
可是我照著root 還是無法執行
$ sudo chmod +x car
$ sudo cp car /usr/bin
這2個指令
都顯示chmod: 無法存取 ‘car’: 沒有此一檔案或目錄
應該是car.py,你是不是忘了附檔名了?
請問我用兩顆L298N控制4顆馬達,照著http://hophd.com/raspberry-pi-remote-car-web-interface/程式中寫,執行顯示程式有錯誤,請問該如何更改呢?
選用第一組GPIO 7 11 13 15 第二組用GPIO 12 16 18 22
錯誤顯示http://hophd.com/raspberry-pi-remote-car-web-interface/
看不懂?訊息是?
你好 試過之後2個馬達皆無法正轉 但反轉皆可
請問問題是出在哪呢