5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

两个电调速度不一样

查看数: 1879 | 评论数: 15 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-7-19 09:59

正文摘要:

用arduino 单片机控制电调 两个电调 两个无刷电机  一个电池,线路并联连接 代码如下 #include <Servo.h> Servo myservo_A;   Servo myservo_C; int val,xp; void setup() { & ...

回复

xu1288 发表于 2013-8-3 20:16
学习!

欢迎继续阅读楼主其他信息

主题

  • 没有相关信息
  • 没有相关信息
  • 没有相关信息
lierisheng 发表于 2013-7-24 14:45
路过帮顶!
tmxkpzl 发表于 2013-7-22 09:16
用硬中断吧,最简单的51单片机用硬中断也能输出很稳定的pwm波!
老金 发表于 2013-7-21 14:02
写固件的难道不懂得用示波器看一下输出波形?
缪飞虎 发表于 2013-7-21 00:09
我本来就没运行两个   首先加入延时参数后 两个IO必然会导致不一样   您可以参考下MWC或者APM代码里驱动电调的部分  这个必须要硬中断吧
15202204035 发表于 2013-7-20 11:38
“缪飞虎” 您这代码运行一个电调电机是没问题的!但是两个您试过么?
15202204035 发表于 2013-7-20 11:37
我电机电调牌子都是一样的我单片机供电是USB电脑 , 电调供电是电池!
15202204035 发表于 2013-7-20 11:36
“缪飞虎” 非常感谢您的指导!我是个新手不太懂!写的代码让您见笑了!但是您的代码我运行了还是速度不一样!
缪飞虎 发表于 2013-7-19 20:59
看到您这么幸苦贴代码的份上 我也给贴一份 供您参考
#include "Servo.h"
Servo servo;
void setup()
{
  servo.attach(9,1000,2000);
}
void loop()
{
   int V1 = analogRead(5);
   int val = map(V1, 0, 1023, 0, 179);
   servo.write(val);
   delay(15);
}

以上代码我用来测试电调非常好用  您可以看看
缪飞虎 发表于 2013-7-19 20:56
#include <Servo.h>  //声明库
Servo myservo_A;  //定义伺服函数A
Servo myservo_C;//定义伺服函数C
int val,xp; //声明变量
void setup() //初始化
{
      pinMode(9,OUTPUT);//定义端口9为输出
       pinMode(10,OUTPUT);//定义端口10为输出
       myservo_A.attach(9,1000,2000); //定义伺服端口9 PWM范围
      myservo_C.attach(10,1000,2000);//定义伺服端口10 PWM范围
       delay(2500);//延时2500毫秒
       myservo_A.writeMicroseconds(1000);//写入伺服端口A 延时1000微秒
       myservo_C.writeMicroseconds(1000);//写入伺服端口C 延时1000微秒
       delay(2000);//延时2000毫秒
       Serial.begin(9600);//设置串口波特率9600
      // delay(4000);
       //myservo_A.write(180);  
       //Serial.println("shangdian");
       //delay(4000);
      myservo_A.write(0); //伺服端口A 写入角度0
      myservo_C.write(0); //伺服端口C 写入角度0
      delay(4000); 延时4000毫秒
}

void loop() //主循环
{
      val = analogRead(A0); // 获得模拟端口A0值 并赋值为VAL
       val = map(val, 0, 1023, 0, 180);   //这句我不懂怎么用专业术语 我只知道意思是 将VAL获得的值从0-1023 量化为0-180的角度值
       myservo_A.write(val);//写入伺服端口A 写入值为角度值
       Serial.println(val);  //串口输出字符 val 并换行
       myservo_C.write(val);//写入伺服端口C 写入值为角度值
}
  

职业高中不毕业的我  可能以上代码注释有误 请指正
但我想说的是 为什么TM要这么多的延时啊  而且代码太不精炼了 您知道Arduino这么用代码效率巨低   而且不能干别的事  你懂了?
缪飞虎 发表于 2013-7-19 20:43
综上所述 楼上的答复都是扯蛋   真正的原因是你延时参数用错了  你地明白?
gedove 发表于 2013-7-19 11:58
还有电调电机最好一样的,电调恢复默认设置。
gedove 发表于 2013-7-19 11:30
单片机和电调电源分开,共地就行了。
15202204035 发表于 2013-7-19 10:39
大神们!!!求救啊!!!
关闭

【站内推荐】上一条 /2 下一条

快速回复 返回顶部 返回列表