2596| 1
|
【自制无人机】“辛”路历程(四)油门调整程序 |
【自制无人机】“辛”路历程(四) 【前言】 这个项目已开始用Leonardo主板了,为什么还要放在Microbit栏目中?1,因为一开始,就打算用Microbit来做主控板。2、将来还打算用Microbit,不知行不行,以后再说。 接上回,控制舵机有两种方法,那控制电调也可以用第二种。 【程序代码】 1.将电调BEC输出的电源线接到Arduino的Vcc上,地线接到Arduino 的GND上,信号线接到Arduino的9号引脚上,并将电机与电调连接起来。 2.用3S电池给电调上电,此时Arduino中的程序开始运行,依次进行油门行程设定、电机启动与电机保持一定转速转动。 代码的注释非常详细: [mw_shl_code=java,false]void setup(){ pinMode(9,OUTPUT);//选取9号引脚接电调信号线 /*油门行程校准(i<=1000时,整个循环用时3-4秒)*/ //该循环运行时会伴有“哔-哔-”油门最高点确认音。运行太快,和下面的声音区分不开;根本跟不上它的节奏,听不清。一会录个视频大家和我一起听! for(int i=0;i<=1000;i++){ digitalWrite(9,HIGH); delayMicroseconds(2000);//高电平持续2000微秒(油门最高点) digitalWrite(9,LOW); delayMicroseconds(18000);} //该循环运行时会伴有N声短鸣声(表示锂电池节数)和“哔-”油门最低点确认音 for(int i=0;i<=1000;i++){ digitalWrite(9,HIGH); delayMicroseconds(1000);//高电平持续1000微秒(油门最低点) digitalWrite(9,LOW); delayMicroseconds(19000); } /*现在可以加大高电平持续时间,即加大油门,实现电机的启动 */ //该循环运行的时间即电机低速转动的时间,进一步证明了i<=1000时,整个循环用时3-4秒 for(int i=0;i<=1000;i++){ digitalWrite(9,HIGH); delayMicroseconds(1430);//油门1430 digitalWrite(9,LOW); delayMicroseconds(18900); } } //loop()函数使油门保持在1450 void loop(){ for(int i=0;i<=1000;i++){ digitalWrite(9,HIGH); delayMicroseconds(1450); digitalWrite(9,LOW); delayMicroseconds(18800); } }[/mw_shl_code] 【一起来听一听】 听声音总感觉不对,也能转。 digitalWrite(9,HIGH); delayMicroseconds(1450); digitalWrite(9,LOW); delayMicroseconds(18800); 这是产生PWM信号? for(int i=0;i<=1000;i++){ 为什么要用1000呢? 明天再说吧! /*2020年3月11日 delayMicroseconds()函数接受单个整数(或数字)参数。此数字表示时间,以微秒为单位。一毫秒内有一千微秒,一秒内有一百万微秒。 目前,可以产生精确延迟的最大值是16383。这可能会在未来的Arduino版本中改变。对于超过几千微秒的延迟,应该使用delay()函数。 delayMicroseconds(18800);18800超过了16383,出现误差比较大。本来循环1000次,应该是20秒,现在实测只有3秒左右。 */ |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed