私はArduinoとこのフォーラムに不慣れで、これはチュートリアル以外の私の最初のArduinoプロジェクトです。
rc トランスミッター/レシーバーと Arudino を使用してサーボを制御しようとしています。サーボを RC 受信機に直接接続する代わりに Arduino を使用している理由は、RC が 1000µs から 2000µs の PWM しか生成できないのに対し、サーボの全範囲の動きを得るには 600µs から 2400µs の PWM が必要だからです。 . 私がやろうとしたことは、pulseIn() から値を読み取り、この値を以下のコードで記述されているように 0 から 180 度にマッピングすることです (これはサーボ ライブラリを使用します)。
しかし、このコードでは、モーターの挙動がおかしくなっています。無線送信機の操縦桿を可動域全体で動かすと、モーターは 0 から 180 度にスイープする代わりに、0 から 45 度に回転し、45 度から 0 度に戻り、0 から 45 度に戻り、再び 0 度に戻ります。誰か助けやアドバイスをお願いできますか?
どうもありがとうございました
#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
}