Pages

Subscribe:

Ads 468x60px

Labels

2013年5月27日 星期一

Arduino通过电位计控制2自由度云台

今天抽些时间编写了一个简单的通过电位计控制2自由度云台的实例,说到这相信会有人开始担心了,以前也有说过Arduino不能控制甚至多于一个舵机,其根本原因在于供电问题,Arduino本身是可以控制少数量的舵机的,今天我使用了V5.0传感器扩展板有外接电源的功能,这样解决了舵机的供电问题。
    我曾介绍过两种控制舵机的方法,一种是使用Arduino数字PWM接口的舵机控制方法一种是Arduino自带函数的控制方法,这里我就用自带函数的方法控制2自由度云台了(幸好云台只有两个舵机,再多一个可就不能用这种方法了)。PWM接口控制云台也很简单,就留给大家自己去试验了。Arduino通过电位计控制2自由度云台
    按老套路还是先说明一下我们要用的硬件设备:Arduino控制器V5.0传感器扩展板电位计模块2个2自由度舵机云台、5V电池、3P传感器线2条、电池连接线。
    按下图连接好电路,电位计1接模拟口4,电位计2接模拟口3,用3P传感器连接线顺次插接即可(黑线-GND、红线-VCC、S-S),云台两个舵机分别接数字9、10接口(只能是这两个接口,前面博文已说明清楚,不详见前文),电池接好在红端子处。
Arduino通过电位计控制2自由度云台
电路连接完成图
源程序如下:
#include
Servo myservo;
Servo myservo1;
int analogPin = 3;
int analogPin1 = 4;
int val,val1;
void setup()
{
  myservo.attach(9);  // 9号引脚输出电机控制信号
  myservo1.attach(10);
  Serial.begin(9600);         //仅能使用9、10号引脚
}
void loop()
{
  Serial.print("servo:");
  Serial.println(val);
  delay(15);
  Serial.print("servo1:");
  Serial.println(val1);
  val = analogRead(analogPin);
  val1 = analogRead(analogPin1);
 // 读取来自可变电阻的模拟值(0到1023之间)
  val = map(val, 0, 1023, 0, 179);     // 利用“map”函数缩放该值,得到伺服电机需要的角度(0到180之间)
  val1 = map(val1, 0, 1023, 0, 179);
  myservo.write(val);     // 设定伺服电机的位置
  myservo1.write(val1);
  delay(15);             // 等待电机旋转到目标角度
}
    程序到此结束,希望对大家能有所帮助。

沒有留言:

張貼留言