张雪梦 发表于 2016-10-16 01:02:52

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

本人是新人小白,学校比赛做的一个监控小车,用的二自由度的云台,需要通过Arduino控制云台的两个舵机还有小车的舵机,小车的舵机(程序里为舵机1)通过程序,蓝牙发送到手机单独可以使用,但是云台上的舵机(舵机2)没有反应,哪位大神可以帮我看一下程序哪里出错了吗?
#include <SoftwareSerial.h>
#include <Servo.h>
Servo myservo1;
Servo myservo2;

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


char tmp1;


int pos1 = 0;


void setup() {
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);

myservo1.attach(9);
delay(50);
myservo2.attach(7);
delay(50);


myservo1.write(40);
delay(50);
myservo2.write(30);
delay(50);


digitalWrite(5, LOW);
digitalWrite(4,LOW);

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



}

void loop()
{
qianjin( );
houtui();
shache();
songyoumen();
zuozhuan();
huizheng();
youzhuan();
huizheng2();

d2();

if (mySerial.available()) {
    tmp1 = mySerial.read();
}
}

void qianjin( )//前进
{
if (tmp1 == 'a')
{
    tmp1 = 0;
    myservo1.write(43);
    analogWrite(3, 55);//25585/255*5
    digitalWrite(5, LOW);
    digitalWrite(4, HIGH);
}
}
void houtui()//后退
{
if (tmp1 == 'b')
{
    tmp1 = 0;
    myservo1.write(43);
    analogWrite(3, 55);//25585/255*5
    digitalWrite(5, HIGH);
    digitalWrite(4,LOW);
}
}
void shache()//刹车
{
if (tmp1 == 'c')
{
    tmp1 = 0;

    analogWrite(3, 0);//25585/255*5
}
}
void songyoumen()   //松油门
{
if (tmp1 == 'd')
{
    tmp1 = 0;

    analogWrite(3, 0);//25585/255*5
    digitalWrite(5, HIGH);
    digitalWrite(4, HIGH);
}
}
void zuozhuan()   //舵机1左转
{
if (tmp1 == 'e')
{
    tmp1 = 0;
    for (pos1 = 45; pos1 <= 75; pos1 += 1)
    {
      myservo1.write(pos1);
      delay(15);
    }
   }
}
void huizheng()//舵机1回正
{
   if (tmp1 == 'f')
{
    tmp1 = 0;
   for (pos1 = 75; pos1 >= 45; pos1 -= 1)
    {
      myservo1.write(pos1);
      delay(15);
   }
}
}
void youzhuan()//舵机1右转
{

   if (tmp1 == 'g')
{
    tmp1 = 0;
    for (pos1 = 45; pos1>=20; pos1 -= 1)
    {
      myservo1.write(pos1);
      delay(15);
    }
   }
}
void huizheng2()    //舵机1右转的回正
{   
if (tmp1 == 'h')
{
    tmp1 = 0;
   for (pos1 =20; pos1 <= 49; pos1 += 1)
    {
      myservo1.write(pos1);
      delay(15);
   }
}
}
void d2() //舵机2号右转
{
if (tmp1 == '1')
{
    tmp1 = 0;
   for (pos1 =20; pos1 <= 49; pos1 += 1)
    {
      myservo2.write(pos1);
      delay(15);
   }
}
}

   




zjz5717 发表于 2016-10-16 10:50:19

7针脚不是pwm口,控制舵机需要使用带有pwm功能的针脚

张雪梦 发表于 2016-10-16 19:24:18

zjz5717 发表于 2016-10-16 10:50
7针脚不是pwm口,控制舵机需要使用带有pwm功能的针脚

谢谢:)我去试试
页: [1]
查看完整版本: 跪求大神,我想用Arduino编程控制3个舵机独立运行互不干扰,第二个舵机控制不了。。。