极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16228|回复: 2

跪求大神,我想用Arduino编程控制3个舵机独立运行互不干扰,第二个舵机控制不了。。。

[复制链接]
发表于 2016-10-16 01:02:52 | 显示全部楼层 |阅读模式
本人是新人小白,学校比赛做的一个监控小车,用的二自由度的云台,需要通过Arduino控制云台的两个舵机还有小车的舵机,小车的舵机(程序里为舵机1)通过程序,蓝牙发送到手机单独可以使用,但是云台上的舵机(舵机2)没有反应,哪位大神可以帮我看一下程序哪里出错了吗?
  1. #include <SoftwareSerial.h>
  2. #include <Servo.h>
  3. Servo myservo1;
  4. Servo myservo2;

  5. SoftwareSerial mySerial(10, 11); // RX, TX


  6. char tmp1;


  7. int pos1 = 0;


  8. void setup() {
  9.   pinMode(3, OUTPUT);
  10.   pinMode(4, OUTPUT);
  11.   pinMode(5, OUTPUT);

  12.   myservo1.attach(9);
  13.   delay(50);
  14.   myservo2.attach(7);
  15.   delay(50);

  16.   
  17.   myservo1.write(40);
  18.   delay(50);
  19.   myservo2.write(30);
  20.   delay(50);


  21.   digitalWrite(5, LOW);
  22.   digitalWrite(4,  LOW);

  23.   mySerial.begin(9600);
  24.   mySerial.println("我是大傻瓜");

  25.   

  26. }

  27. void loop()
  28. {
  29. qianjin( );
  30.   houtui();
  31.   shache();
  32.   songyoumen();
  33.   zuozhuan();
  34.   huizheng();
  35.   youzhuan();
  36.   huizheng2();

  37.   d2();
  38.   
  39.   if (mySerial.available()) {
  40.     tmp1 = mySerial.read();
  41.   }
  42. }

  43. void qianjin( )  //前进
  44. {
  45.   if (tmp1 == 'a')
  46.   {
  47.     tmp1 = 0;
  48.     myservo1.write(43);
  49.     analogWrite(3, 55);//255  85/255*5
  50.     digitalWrite(5, LOW);
  51.     digitalWrite(4, HIGH);
  52.   }
  53. }
  54. void houtui()  //后退
  55. {
  56.   if (tmp1 == 'b')
  57.   {
  58.     tmp1 = 0;
  59.     myservo1.write(43);
  60.     analogWrite(3, 55);//255  85/255*5
  61.     digitalWrite(5, HIGH);
  62.     digitalWrite(4,  LOW);
  63.   }
  64. }
  65. void shache()  //刹车
  66. {
  67.   if (tmp1 == 'c')
  68.   {
  69.     tmp1 = 0;

  70.     analogWrite(3, 0);//255  85/255*5
  71.   }
  72. }
  73. void songyoumen()   //松油门
  74. {
  75.   if (tmp1 == 'd')
  76.   {
  77.     tmp1 = 0;

  78.     analogWrite(3, 0);//255  85/255*5
  79.     digitalWrite(5, HIGH);
  80.     digitalWrite(4, HIGH);
  81.   }
  82. }
  83. void zuozhuan()   //舵机1左转
  84. {
  85.   if (tmp1 == 'e')
  86.   {
  87.     tmp1 = 0;
  88.     for (pos1 = 45; pos1 <= 75; pos1 += 1)
  89.     {
  90.       myservo1.write(pos1);
  91.       delay(15);
  92.     }
  93.    }
  94. }
  95. void huizheng()  //舵机1回正
  96. {
  97.    if (tmp1 == 'f')
  98.   {
  99.     tmp1 = 0;
  100.      for (pos1 = 75; pos1 >= 45; pos1 -= 1)
  101.     {
  102.       myservo1.write(pos1);
  103.         delay(15);
  104.      }
  105. }
  106. }
  107. void youzhuan()  //舵机1右转
  108. {

  109.    if (tmp1 == 'g')
  110.   {
  111.     tmp1 = 0;
  112.     for (pos1 = 45; pos1>=20; pos1 -= 1)
  113.     {
  114.       myservo1.write(pos1);
  115.       delay(15);
  116.     }
  117.    }
  118. }
  119. void huizheng2()    //舵机1右转的回正
  120. {   
  121. if (tmp1 == 'h')
  122.   {
  123.     tmp1 = 0;
  124.      for (pos1 =20; pos1 <= 49; pos1 += 1)
  125.     {
  126.       myservo1.write(pos1);
  127.         delay(15);
  128.      }
  129.   }
  130. }
  131. void d2() //舵机2号右转
  132. {
  133. if (tmp1 == '1')
  134.   {
  135.     tmp1 = 0;
  136.      for (pos1 =20; pos1 <= 49; pos1 += 1)
  137.     {
  138.       myservo2.write(pos1);
  139.         delay(15);
  140.      }
  141.   }
  142. }

  143.    
复制代码





回复

使用道具 举报

发表于 2016-10-16 10:50:19 | 显示全部楼层
7针脚不是pwm口,控制舵机需要使用带有pwm功能的针脚
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-16 19:24:18 | 显示全部楼层
zjz5717 发表于 2016-10-16 10:50
7针脚不是pwm口,控制舵机需要使用带有pwm功能的针脚

谢谢我去试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 14:59 , Processed in 0.037449 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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