スポンサーサイト

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

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

作ってみたプログラムを忘れないうちに。

12120200
前回2つの信号を読み取るところまではやったので、
信号の値を比較して模型戦車が動かせる様にプログラムをしてみます。

12112900
画像は使いまわしw
目標はラジコンのVテールっぽい動きをする事なので、
スロットルとステアリングの値で動作の関係を表にして、
動作の条件式を明確にします。

12120201

Arduinoのプログラミング構成の一例。
スロットルがそれぞれ
 「引かれている時」
 「戻されている時」
 「ニュートラルの時」
の、ステアリングの状態によって動作を決めるif命令分を
書きます。

<<<<<以下、参考プログラム>>>>>

// 参考プログラムその2

// ラジコン受信機のパルスを読みとるビットを設定。
int rcv1 = 5; //1ch目、スロットル
int rcv2 = 6; //2ch目、ステアリング
int RV1 = 0; // 1ch目読み取り用変数
int RV2 = 0; // 2ch目読み取り用変数

// モータ制御にはモータドライブIC「TA7291P」を
// 試用します。
// 3番、9番ピンをモータ1、10番、11番ピンをモータ2
// の制御に使用します

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

// 今回は操縦プログラムにするので、シリアル通信は無し
}

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

// 以下、スロットルとステアリングの値による条件分岐
// 実際に値は使用する送信機の仕様で異なります。
// 今回は1ch目 1900~1500~1100、
// 2ch目 1700~1500~1300 の範囲で変化する
// タイプのプログラムになっています。

// その1:1ch目の値が1700より大きい
if ( RV1 > 1700)
{
if ( RV2 > 1600)
{ // 右折
analogWrite(3,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,125);

delay (30);

}
if ( RV2 < 1400)
{ // 左折
analogWrite(3,0);
analogWrite(9,125);
analogWrite(10,0);
analogWrite(11,0);

delay(30);

}
if ( RV2 < 1600 && RV2 > 1400)
{ // 前進
analogWrite(3,0);
analogWrite(9,125);
analogWrite(10,0);
analogWrite(11,125);

delay(30);

}
}

// その2:1ch目の値が1300より小さい
if ( RV1 < 1300)
{
if ( RV2 > 1600)
{ // 右後方
analogWrite(3,0);
analogWrite(9,0);
analogWrite(10,125);
analogWrite(11,0);

delay(30);

}
if ( RV2 < 1400)
{ // 左後方
analogWrite(3,125);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);

delay(30);

}
if ( RV2 < 1600 && RV2 > 1400)
{ // 後進
analogWrite(3,125);
analogWrite(9,0);
analogWrite(10,125);
analogWrite(11,0);

delay(30);

}
}

// その3:1chの値が1700~1300の間
if ( RV1 < 1700 && RV1 > 1300)
{
if ( RV2 > 1600)
{ // 右旋回
analogWrite(3,125);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,125);

delay(30);

}
if ( RV2 < 1400)
{ // 左旋回
analogWrite(3,0);
analogWrite(9,125);
analogWrite(10,125);
analogWrite(11,0);

delay(30);

}
if ( RV2 < 1600 && RV2 > 1400)
{ // 停止
analogWrite(3,0);
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);

delay(30);

}

}

}



楽天市場/スーパー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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。