舵機介紹:http://www.51hei.com/mcu/2672.html
樹莓派PWM函數介紹:http://shumeipai.nxez.com/2014/11/13/rpi-gpio-module-pwm-basic-function.html
舵機角度和占空比對應的關系動畫。
對應關系如下,範圍為-90°到+90°。為了友善計算,可以将其映射到0-180°
角度
20ms内脈沖寬度
占空比
映射後角度
-90°
0.5ms
2.5%
0°
-45°
1ms
5.0%
45°
0°
1.5ms
7.5%
90°
45°
2ms
10.0%
135°
90°
2.5ms
12.5%
180°
GPIO庫中p.ChangeDutyCycle()需要控制PWM的參數需要的是占空比(确切的說,占空比*100),而我們要調節的是角度,估映射後角度和占空比的對應函數關系為:f = 1/18*角度 + 2.5
根據給出的對應關系,猜測是線性關系。
2.5 = 0*x + b
12.5 = 180*x + b
解二進制一次方程 (國小數學 :)) x = 1/18 b=2.5
代碼如下
def changeDgree(degree):
"""舵機轉到給定到角度"""
duty_cycle = float(degree)/18 + 2.5
p.ChangeDutyCycle(duty_cycle)
定要等待,留下足量時間供電,以轉到特定角度,即讓設定生效
time.sleep(0.5)