Raspberry Pi 雙輪機器人


Raspberry Pi 上的 GPIO 腳位不好好利用實在可惜,但它對於電路的保護不算太好,所以周邊的擴充板也應運而生。在此使用 Adafruit 所出品的 Pi Plate 做一台雙馬達機器人,先來看影片:

YouTube 影片



 

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()   

Comments