スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Arduinoでラジコン受信機を読み取る

12112801

授業用に急きょArduinoタンクをラジコン化する事に。

普通に「pulseIn」命令を使えば良いだけ、と考えれば
簡単に出来るのですが、かわロボ等の4ch前後使用する
プロポをイメージした場合、理論上で最大100ミリ秒
近く処理が遅れる恐れがあるのでどうしようかと躊躇してました。

「かわさき」のバトルロボットでは、0.1秒操作が遅れた事で
勝敗がひっくり返るケースがあります。
プロのRCカーレース真っ青の格闘戦が行われている訳です・・・


今回は2chしか使用しない&動作させるのが模型戦車レベルなので、
応答性も大して気にすることなくやっちゃいます。

12112800

Arduinoボードの5Vポートから受信機の電源を拝借、信号ラインは
適当なデジタルポートに2回線分入れます。

12112802
後は以下のプログラムを入れ、シリアルモニタで状態確認します。
入力される値はマイクロ秒単位なので、大体1500を中心に

1100~1500~2000

の範囲でプロポの操作した値が表示されます。
あとは、値の組み合わせで前進、後進、右折、左折、左右ターン等
動作命令を作っていけばOK。

---------------------------------------------------------

// 参考プログラム
int rcv1 = 5; //1ch目、スロットル
int rcv2 = 6; //2ch目、ステアリング
int RV1 = 0; // 1ch目読み取り用変数
int RV2 = 0; // 2ch目読み取り用変数

void setup()
{
pinMode(rcv1,INPUT); // 受信機の信号線を入力するのでINPUT
pinMode(rcv2,INPUT); // 同上

Serial.begin(9600); // シリアルモニタに値を返すので通信開始
// 実際に操縦プログラムにするなら、シリアル通信は削除しても可
}

void loop()
{
RV1 = pulseIn(rcv1,HIGH); // PulseがHIGHになったら計測開始
RV2 = pulseIn(rcv2,HIGH); // 同上

// 以下シリアルモニタに読み取った値を出力
// 表示書式は「RV1: ****,RV2: ****」となります。
Serial.print("RV1: ");
Serial.print(RV1);
Serial.print(",RV2: ");
Serial.print(RV2);
Serial.println();

delay(1000); // 表示を追いかけやすくする為、1秒おきに動作。

}


楽天市場/スーパーwifi

お得なスーパーwifi

さて、稼ぎますか!

楽天市場/お勧め

楽天市場/ホビー

楽天トラベル

amazon/パソコン周辺機器

検索フォーム

更新カレンダー

08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

最新記事

携帯用QRコード

QR

Amazon:通販

amazon/TVゲーム

amazon/模型関係

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。