我想设计一个用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++;
}
}
|