舵機介紹: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)