スポンサーサイト

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

かわロボミキサー

13070702

只今最後の仕上げ中!!
前回の記事で触れた「前進中にそのまま旋回したい」希望を盛り込んだArduino用プログラムに書き換えてみました。

言うならVテールミキサーならぬ「かわロボミキサー」といったところでしょうか。

<説明>
・ 今回使用した機材 プロポ:FUTABA Attack 4YWD ESC:FUTABA MC231CR×2
 2ch分のラジコン信号を読み取り、組み合わせでESCへの出力をミキシングします。
マイコンの8番、9番ピンに信号を入力し、4番、4番ピンにESCへの出力信号を出します。

// 参考プログラム(変数を宣言する部分)

#include <Servo.h> 最後の>だけ全角を半角に直して

int rcv1 = 8;
int rcv2 = 9;
int RV1;
int RV2;

int RVout1;
int RVout2;
int inv1;
int inv2;

int RV10;
int RV20;

Servo Sout1;
Servo Sout2;

<説明>
・ 次にsetup()の宣言をします。
 ラジコン信号の読み取りピンをINPUTに設定、
 反転判定inv*の変数を初期値0に設定、
 ESC制御用にサーボ出力ピンを設定、
 ニュートラル値設定の為、一回だけ2ch分のサーボパルス読み取り

※ いろいろ試してみたのですが、ニュートラル値をint宣言で数値で固定使用しようとするとなぜか正常に動作しなかった為、起動時の初回読み取りは残したままになりました。
これで電源リセット時誤認識のウィークポイントは残ったままに・・・
使用する人がいらっしゃる場合、バッテリーの容量&残量には気をつけましょう。

// 起動時セットアップ

void setup()
{
pinMode(rcv1,INPUT);
pinMode(rcv2,INPUT);

inv1 = 0;
inv2 = 0;

Sout1.attach(4);
Sout2.attach(5);

RV10 = pulseIn(rcv1,HIGH);
RV20 = pulseIn(rcv2,HIGH);
}

<説明>
・ メインプログラム部です。
 まず受信機からの信号入力を読み取り、1ch目と2ch目の組み合わせによってESCへ出力する信号の内容を決めます。前進、後進時はスロットルの読み取り値をそれぞれに送り、現時点では値の反転が正常に動作しないので、バックの命令時は固定値を出力するようにしています。

// メインプログラム

void loop()
{
RV1 = pulseIn(rcv1,HIGH);
RV2 = pulseIn(rcv2,HIGH);

if ( RV1 > 1550)
{
if ( RV2 > 1550)
{
RVout1 = RV10;
RVout2 = RV1;
}

if ( RV2 < 1450)
{
RVout1 = RV1;
RVout2 = RV20;
}

if ( RV2 < 1550 && RV2 > 1450)
{
RVout1 = RV1;
RVout2 = RV1;
}
}

if ( RV1 < 1450)
{
13070700
<説明>
 ここから下の2つのif文で、前進中の左右旋回ができる様になります。

if ( RV2 > 1550)
{
RVout1 = (1900);
RVout2 = (1100);
}

if ( RV2 < 1450)
{
RVout1 = (1100);
RVout2 = (1900);
}
13070701

if ( RV2 < 1550 && RV2 > 1450)
{
RVout1 = RV1;
RVout2 = RV1;
}
}

if ( RV1 < 1550 && RV1 > 1450)
{
if ( RV2 > 1550)
{
RVout1 = (1900);
RVout2 = (1100);
}

if ( RV2 < 1450)
{
RVout1 = (1100);
RVout2 = (1900);
}

if ( RV2 < 1550 && RV2 > 1450)
{
RVout1 = RV1;
RVout2 = RV2;
}
}

<説明>
 メインプログラムの終盤部分、グリットブレーキのないESC(バックに入れる時スティックを2回チョンチョンとやるタイプ)を使用した場合のパルス出力命令です。
前進の時はそのまま出力、バックに命令が入った時、最初の一回だけスティックの2回入れ動作をプログラムで出力しています。

// クローラ未対応ESC制御プログラム
// #1ch
if (RVout1 > 1550)
{
if (inv1==1) {
Sout1.writeMicroseconds(RVout1);
}
else if(inv1==0){
Sout1.writeMicroseconds(RVout1);
delay(100);
Sout1.writeMicroseconds(RV10);
delay(100);
Sout1.writeMicroseconds(RVout1);
inv1=1;
}
}
else
{
Sout1.writeMicroseconds(RVout1);
inv1 = 0;
}

// #2ch
if (RVout2 > 1550)
{
if (inv2==1) {
Sout2.writeMicroseconds(RVout2);
}
else if(inv2==0){
Sout2.writeMicroseconds(RVout2);
delay(100);
Sout2.writeMicroseconds(RV20);
delay(100);
Sout2.writeMicroseconds(RVout2);
inv2=1;
}
}
else {
Sout2.writeMicroseconds(RVout2);
inv2 = 0;
}
}

<プログラムここまで>

ちなみに、クローラ対応ESCを使用して、Vテールミキシング機能の無いプロポを使用する場合(いるのかそんなパターン・・・)の出力命令部分はぐっと単純になり、

// クローラ対応ESC制御プログラム
// #1ch
Sout1.writeMicroseconds(RVout1);
// #2ch
Sout2.writeMicroseconds(RVout2);
}

だけになります。

ツインモータ仕様なんてのも。

楽天市場/スーパーwifi

お得なスーパーwifi

さて、稼ぎますか!

楽天市場/お勧め

楽天市場/ホビー

楽天トラベル

amazon/パソコン周辺機器

検索フォーム

更新カレンダー

06 | 2017/07 | 08
- - - - - - 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 31 - - - - -

最新記事

携帯用QRコード

QR

Amazon:通販

amazon/TVゲーム

amazon/模型関係

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