ジョイスティックモジュールで2軸FPVカメラクレードルを制御する
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 2 |
このプロジェクトについて
みなさん、こんにちは
今日は、ジョイスティックモジュールで2軸FPVカメラクレードルを制御する方法の完全なチュートリアルを見ていきます。カメラクレードルは、アクリル製のサポートと部品、ネジと2つのサーボモーターを含む小さなパッケージで提供されます。
要件:続行する前に、ジョイスティックとサーボモーターのどちらにも慣れていない場合は、次の2つのチュートリアルをご覧ください。
- ジョイスティックモジュールをArduinoボードと簡単にインターフェースする方法
- Arduinoでサーボモーターを使用する
したがって、ここでは2つの方法を使用してサーボを制御します。1つはサーボがジョイスティックの位置に従い、スティックを動かしながら移動する方法、もう1つはサーボがジョイスティックが指している方向に向かって移動を開始する方法です。スティックをもう一度動かすか方向を変えるまで、そこにとどまります。
これは、最後に行う予定のデモです:
チュートリアルビデオでは、配線中またはキャリブレーション中も段階的に説明しましたが、ここでは、モジュールやサーボが他に影響を与えていないため、問題のない配線全体を紹介します。
ジョイスティックの軸と混同しないように、ここの写真ではジョイスティックの軸(X軸が上、次にY軸)が逆になっており、別の名前が付けられていますが、使用した配線は好きなように変更できます(サーボピン、ジョイスティック)。入力、方向…)
ビデオで実際に多くのコードを使用したので混乱しないでください。ただし、それらは非常に基本的です(サーボの配置、ジョイスティックからのアナログ値の読み取りなど)。他のチュートリアルを確認する前にこれを行ったので、ここでビデオで見られるように、2つの最終バージョンの2つのコードのみをアップロードしました。
これについて何か必要な場合は、私に連絡してください。
コード
- ビデオのようにコード1
- ビデオのようにコード2
ビデオのようにコード1 Arduino
//このコードは、2つのサーボを使用する2軸fpvカメラクレードルで使用し、ジョイスティックモジュールを追加します//アナログスティックを動かすことでクレードルの位置を制御します。クレードルはジョイスティックの動きに従います//参照詳細については、surtrtech.comを参照してください。#include//サーボライブラリと宣言Servomyservo1; Servo myservo2; int YAxis =1; //ジョイスティックピンのX軸とY軸が配線されている場所を宣言しますintXAxis =0; //もちろんアナログ入力voidsetup(){Serial.begin(9600); //シリアルモニターのボードレートを設定し、pinMode(XAxis、INPUT);を起動します。 //ピンモードとサーボピンの宣言myservo1.attach(8); pinMode(YAxis、INPUT); myservo2.attach(9);} void loop(){int X =analogRead(XAxis); // X軸ポテンショメータからの読み取りX =X * 0.1756; //ポテンショメータの範囲をサーボの0-1023から0-180の制限に変換すると、360°サーボがある場合はそれらを変更できますX =180-X; //これは、サーボが正確な位置に回転するように使用されます。 myservo1.write(X);が反転されます。 //適応後、その値を最初のサーボに注入しますint Y =analogRead(YAxis); // Y軸ポテンショメータからの読み取りY =Y * 0.1466; //ここでは、サーボ制限に適した変換を行ったため、0-1023から0-150に変更しましたmyservo2.write(Y); //そしてサーボに注入します}
ビデオのようにコード2 Arduino
//このコードは、2つのサーボを使用する2軸fpvカメラクレードルで使用し、ジョイスティックモジュールを追加します//アナログスティックを動かすことでクレードルの位置を制御します。クレードルはスティックがある方向に移動しますポインティング//限界までそこにとどまる//詳細についてはsurtrtech.comを参照#include//サーボライブラリと宣言Servomyservo1; Servo myservo2; int a、b、X、Y; //後で必要な変数intYAxis =1; //ジョイスティックピンのX軸とY軸が配線されている場所を宣言しますintXAxis =0; //もちろんアナログ入力voidsetup(){Serial.begin(9600); //シリアルモニターのボードレートを設定し、pinMode(XAxis、INPUT);を起動します。 //ピンモードとサーボピンの宣言myservo1.attach(8); pinMode(YAxis、INPUT); myservo2.attach(9);} void loop(){a =myservo1.read(); //前のサーボ位置を読み取ることは重要なステップであるため、次のサーボ位置を知ることができますb =myservo2.read(); X =analogRead(XAxis); //ジョイスティックの値を読み取るY =analogRead(YAxis); if(X> 550){//ここではキャリブレーションを行わなかったため、ジョイスティックには3つの位置(左|静止|右)a =a-1; //読み取る値によって異なりますが、スティックがどちらの方向を指しているかを知ることができ、静止位置を大きくしたままにしました。実際には1つの値ですmyservo1.write(a); //新しい値delay(50);を注入します//遅延を大きくまたは短くするか、a =a-xに基づいて大きなステップまたは短いステップを作成できます} if(X <450){a =a + 1; //ここでは、反対方向に移動するために反対操作を実行しましたmyservo1.write(a); delay(50); } if(Y> 600){//ここではキャリブレーションを行わなかったため、ジョイスティックには3つの位置(上|休憩|下)があります。同上b =b + 1; myservo2.write(b); delay(50); } if(Y <450){b =b-1; myservo2.write(b); delay(50); }
回路図
上部サーボと下部サーボがあり、混乱しないでください 製造プロセス