Raspberry Pi 上的 GPIO 腳位不好好利用實在可惜,但它對於電路的保護不算太好,所以周邊的擴充板也應運而生。在此使用 Adafruit 所出品的 Pi Plate 做一台雙馬達機器人,請看影片:
[youtube=http://www.youtube.com/watch?v=2XQYf00wYEc]
Adafruit 所出品的 Pi Plate 可以直接疊在 Raspberry Pi 的 GPIO 腳位上,並有小型工作區可以製作簡單的電路。不想焊接也可以疊加麵包板。
以下是本台機器人的範例程式碼,使用 Python 編寫。定義了三個動作:直走、左轉與右轉。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
def straight():
GPIO.output(17,GPIO.HIGH)
GPIO.output(18,GPIO.HIGH)
GPIO.output(22,GPIO.HIGH)
GPIO.output(23,GPIO.HIGH)
GPIO.output(24,GPIO.HIGH)
GPIO.output(25,GPIO.HIGH)
time.sleep(1)
GPIO.output(17,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
GPIO.output(22,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
GPIO.output(24,GPIO.LOW)
GPIO.output(25,GPIO.LOW)
time.sleep(1)
return
def right():
GPIO.output(17,GPIO.HIGH)
GPIO.output(18,GPIO.HIGH)
GPIO.output(22,GPIO.HIGH)
time.sleep(0.5)
straight()
def left():
GPIO.output(23,GPIO.HIGH)
GPIO.output(24,GPIO.HIGH)
GPIO.output(25,GPIO.HIGH)
time.sleep(0.5)
straight()
while 1:
straight()
time.sleep(5)
right()
time.sleep(5)
left()
time.sleep(5)
GPIO.cleanup()