重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
材料:樹莓派3,wiringpi,電源,HobbyWing電調;
我們提供的服務有:成都網站設計、成都做網站、外貿網站建設、微信公眾號開發、網站優化、網站認證、永和ssl等。為千余家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的永和網站制作公司
接口:電調的白色線接GPIO21,黑色線接地;
代碼:
import wiringpi as wiringpi
from time import sleep;
#from wiringpi import GPIO
wiringpi.wiringPiSetupGpio()
#import wiringpi as wiringpi
wiringpi.pinMode(21,1)
wiringpi.digitalWrite(21,0)
wiringpi.pwmSetClock(2)
W=raw_input("Input 1-200 :")
i=wiringpi.softPwmCreate(21,0,200)
wiringpi.softPwmWrite(21,int(W))
W=raw_input("Input 1-200 :")
wiringpi.softPwmWrite(21,int(W))
W=raw_input("Input 1-200 :")
wiringpi.softPwmWrite(21,int(W))
W=raw_input("Input 1-200 :")
wiringpi.softPwmWrite(21,int(W))
W=raw_input("Input 1-200 :")
wiringpi.softPwmWrite(21,int(W))
W=raw_input("Input 1-200 :")
wiringpi.softPwmWrite(21,int(W))
W=raw_input("Input 1-200 :")
wiringpi.softPwmWrite(21,int(W))
W=raw_input("Input 1-200 :")
wiringpi.softPwmWrite(21,int(W))
while 1:
sleep(30)
print "goodbye"
1234567891011121314151617181920212223242526272829303132
4.操作
1)先給樹莓派上電,運行程序,輸入參數20,此時樹莓派通過GPIO21輸出周期為20ms,脈寬為2ms的方波(相當于油門最大);
2)電調上電,“嗶嗶”兩聲后,3秒內將輸入輸入參數10,此時樹莓派通過GPIO21輸出周期為20ms,脈寬為1ms的方波(相當于油門最小);
3)油門設定完畢,將參數設定成11,電機開始以較低速度旋轉,逐漸提高輸入參數,轉速隨著升高,參數為20時達到最高速。
5.總結
用wiringpi的softPWM,PWM的Clock是固定不變的(100us),而我們需要的PWM周期20ms,softPwmCreate中設置200就好了。問題在于softPwmWrite函數中的參數均為整數,轉速10到20可調,也就是共11個檔位,對于精確控制不利,后面需要解決這個問題。
頂
踩
代碼中第二個open()函數調用的地方,語句pwm_struct
=
pack('ii',
pwm_pin,
pwm)中pack函數最后一個參數pwm哪來的?你自己找找,是不是寫錯了
參數錯誤了,文件操作肯定失敗,所以提示i\o錯誤
是這樣我用樹莓派的gpio口,通過python的rpi.gpio 這個模塊輸出pwm波,頻率是50hz,占空比是5%~10%,可是舵機根本不動,只有在剛插上的時候會不規律的動一下,
python程序運行后提示IOError: [Errno 22] Invalid argument是設置錯誤造成的,解決方法為:
1、根據提示找到錯誤代碼處進行查看,是open函數出了問題。
2、再仔細看這個部分報錯的文件名稱,發現有個*號,問題就找出來了。
3、使用.replace('*','')將*號替換,就可以了。
4、再次運行該代碼。
5、最后,圖片抓取完成。
信周期是20ms,高電平時間只在1ms~2ms之間變化。1ms表示油門最低,2ms最高,1us步進。電調接電時信號必須是油門最低狀態(這是一種保護,防止一接電電機就轉,航模的螺旋槳可是快的和刀子一樣)
信號要持續給,電平時間不要跳變。
第一行:以可編輯模式打開文件
第二行:打包(..)使可識別
第三行:沒見過這個用法,ioctl應該是一個I/O函數,但是這么用不知道具體意思是什么
這三行代碼應該是某個調用I/O驅動程序的一部分,目的是編輯驅動文件。