我是Arduino和本次论坛的新手,这是我除了教程之外的第一个Arduino项目。Arduino和RC发射器
我想用rc发射器/接收器和Arudino来控制伺服器。我使用Arduino而不是直接连接到RC接收器的原因是,RC只能产生1000Hz到2000Hz的PWM,而我需要600Hz到2400Hz的PWM来获得我的伺服器的全部运动范围。我试图做的是从pulseIn()读取值,然后将此值映射到0到180度,如下面的代码(使用伺服库)所写。
但是,使用此代码时,电机行为很奇怪。当我将无线电发射器控制杆移动通过它的运动范围时,电机从0度旋转到45度,从45度旋转到0度,0度到45度,再次回到0度,而不是从0度旋转到180度。任何人都可以请提供一些帮助或建议吗?
非常感谢您
#include <Servo.h>
Servo myservo;
int ch1;
int ch2;
int ch3;
int degree;
void setup() {
pinMode(7, INPUT);
myservo.attach(9);
Serial.begin(9600);
}
void loop() {
ch3 = pulseIn(7, HIGH, 25000);
degree = ((ch3-1250)* 180)/700;
Serial.print("Channel 3:");
Serial.println(ch3);
myservo.write(degree);
delay(5); // waits 5ms for the servo to reach the position
}
舵机通过脉宽调制信号进行控制。宽度上的单位是时间,而不是频率。在上面的问题中,输入的值是1000 - 2000微秒。所需的输出是600 - 2400微秒以获得完整的角度旋转。将“Hz”添加到问题的编辑不正确。 – jdr5ca 2013-02-13 07:53:36