狙击手ggg 发表于 2015-4-14 17:22:48

请教如何控制两个舵机

我想设计一个用51单片机控制arduino,由arduino控制两个舵机,方法是由51给arduino的io口发送高低电平,arduino检测后,控制两个舵机的左右、上下转动,可是发现舵机晃动的特别厉害,我用的是arduino uno和两个辉盛MG905,9克金属舵机。不知道是什么原因,请大神解答一下吧。
#include <Servo.h>

#define leftmax 155
#define rightmax 35
#define upmax 90
#define downmax 180

int leftpin=1;
int rightpin=2;
int uppin=4;
int downpin=8;

int left=0;
int right=0;
int up=0;
int down=0;

Servo myservo1;
Servo myservo2;
//Servo myservo3;
//Servo myservo4;
//Servo myservo5;

int pos_left = 95;
int pos_right = 95;
int pos_up = 120;
int pos_down = 120;

void setup()
{
pinMode(1,INPUT);
pinMode(2,INPUT);
pinMode(4,INPUT);
pinMode(8,INPUT);
myservo1.attach(3);
myservo2.attach(5);
// myservo3.attach(6);
// myservo4.attach(9);
// myservo5.attach(10);
//Serial.begin(9600);

}

void loop()
{
left=digitalRead(leftpin);
right=digitalRead(rightpin);
up=digitalRead(uppin);
down=digitalRead(downpin);
/* if(left==HIGH)
{
   if(pos_left>leftmax)pos_left=leftmax;
   myservo1.write(pos_left);               
   delay(15);
   pos_left++;
}

if(right==HIGH)
{
   if(pos_right<rightmax)pos_right=rightmax;
   myservo1.write(pos_right);            
   delay(15);
   pos_right++;
}
*/
if(up==HIGH)
{
   if(pos_up<upmax)pos_up=upmax;
   myservo2.write(pos_up);            
   delay(15);
   pos_up++;
}

if(down==HIGH)
{
   if(pos_down>downmax)pos_down=downmax;
   myservo2.write(pos_down);               
   delay(15);
   pos_down++;
}
}

tsaiwn 发表于 2015-4-14 17:31:41

电力不足
舵机要使用外接电源 !

狙击手ggg 发表于 2015-4-14 19:16:11

好的,我试试吧。还想知道一点,就是有没有必要买淘宝上的16路舵机控制板呢?我的作品有一个摄像头云台,需要2个舵机,还有一个3舵机的机械臂,用一个arduino uno是不是没法很好的实现功能呢?

microplc 发表于 2015-4-14 21:14:42

mega2560有16个PWM,价格也不贵。

suoma 发表于 2015-4-15 09:58:02

狙击手ggg 发表于 2015-4-14 19:16 static/image/common/back.gif
好的,我试试吧。还想知道一点,就是有没有必要买淘宝上的16路舵机控制板呢?我的作品有一个摄像头云台,需 ...

建议加个舵机扩展板
页: [1]
查看完整版本: 请教如何控制两个舵机