- 材料:树莓派3,wiringpi,电源,HobbyWing电调;
- 接口:电调的白色线接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"
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个档位,对于精确控制不利,后面需要解决这个问题。