2019年7月12日金曜日

3軸トリムコントローラ製作 その4 コーディングと命名

今回製作した3軸トリムコントローラですが、「TRIM CUBE」と命名しました。だれか商標登録してください。

大した内容ではありませんが、最後にArduino Pro Micro用のコードもアップしておきます。アナログ入力の回路自体はとても簡単なので、ポテンショメータの実装はこちらこちらなどを参考にしてみてください。

部品実装が面倒だったので基板面積削減のため、チャタリング防止はコード上でごく簡単に処理しています。実用上は問題無し、至極快適です。

以下コードです。
------------------------------------------------------------------------------------------
//trim cube v2.00
                                                                                     
#include "Joystick.h"
int xAxis = 512;
int yAxis = 512;
int zAxis = 512;
int currentXAxis = 512;
int currentYAxis = 512;
int currentZAxis = 512;
int dev = 0;
int dev2 = 0;
int mon = 0; // mon = 1のとき、シリアルモニタ出力
//ジョイスティックの開始
Joystick_ Joystick;
void setup() {
//シリアルモニタ開始
  Serial.begin(9600);

//ジョイスティックの初期化
  Joystick.begin();
}
void loop() {
//X軸読み取り
  xAxis = analogRead(A1);
  dev = xAxis - currentXAxis;
  dev2 = dev * dev;
//チャタリング防止のため、従来値と現在値の差が2以上の場合、データ更新
  if (dev2 > 2){
//ジョイスティック出力
    Joystick.setXAxis(xAxis);
//従来値を更新
    currentXAxis = xAxis;
    if (mon == 1){
      Serial.print("x = ");
      Serial.println(xAxis);
    }
  }
//Y軸読み取り
  yAxis = analogRead(A2);
  dev = yAxis - currentYAxis;
  dev2 = dev * dev;
//チャタリング防止のため、従来値と現在値の差が2以上の場合、データ更新
  if (dev2 > 2){
//ジョイスティック出力
    Joystick.setYAxis(yAxis);
//従来値を更新
    currentYAxis = yAxis;
    if (mon == 1){
      Serial.print("y = ");
      Serial.println(yAxis);
    }
  }
//Z軸読み取り
  zAxis = analogRead(A3);
  dev = zAxis - currentZAxis;
  dev2 = dev * dev;
//チャタリング防止のため、従来値と現在値の差が2以上の場合、データ更新
  if (dev2 > 2){
//ジョイスティック出力
    Joystick.setZAxis(zAxis);
 
//従来値を更新
    currentZAxis = zAxis;
    if (mon == 1){
      Serial.print("z = ");
      Serial.println(zAxis);
    }
  }
}



0 件のコメント:

コメントを投稿

ESP32でスマホとシリアル通信 その2 BluetoothでLチカ

1.BluetoothでLチカ制御 前回、Bluetoothでの双方向通信に成功しましたので、ついでに少しスケッチを修正してスマホからESP32のLチカを制御した様子が以下の動画です。 撮影が悪くて画面が良く見えませんが、"1"を送信...