大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
材料:树莓派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驱动程序的一部分,目的是编辑驱动文件。