我是 Arduino 和这个论坛的新手,这是我除了教程之外的第一个 Arduino 项目。
我正在尝试使用 rc 发射器/接收器和 Arudino 来控制伺服。我使用 Arduino 而不是将伺服直接连接到 RC 接收器的原因是 RC 只能生成 1000µs 到 2000µs 的 PWM,而我需要 600µs 到 2400µs 的 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
}