見出し画像

M5Stack ATOM S3 LiteでJoystick Unitを使用する方法

※以下の記事はClaude 3.5 Sonnet.に作ってもらいました。実際に動作確認できました。
M5Stack ATOM S3 LiteでJoystick Unitを使用する方法

こんにちは!今回は、M5Stack ATOM S3 LiteでJoystick Unitを使用する方法を紹介します。Joystick UnitはGrove接続を使用するため、セットアップが非常に簡単です。

必要なもの

  • M5Stack ATOM S3 Lite

  • M5Stack Joystick Unit

  • Grove ケーブル

  • USB Type-Cケーブル

  • Arduino IDE(または好みのIDE)


セットアップ

  1. Grove ケーブルを使用して、Joystick UnitをATOM S3 Liteに接続します。
    ATOM S3 LiteのGroveポートは、以下のピンに対応しています:

    • SDA → GPIO 2

    • SCL → GPIO 1

  2. Arduino IDEに「M5Stack」のボードマネージャーと「M5AtomS3」ライブラリをインストールします。

コード

以下が完全なソースコードです:

 #include  <M5AtomS3.h> #include  <Wire.h>
 #define  JOY_ADDR 0x52 // Joystick Unit I2C address

void setup() {
  AtomS3.begin(false);  // LED無効化でAtomS3を初期化
  Serial.begin(115200);
  Serial.println("Joystick Unit Test");
  
  Wire.begin(2, 1);  // ATOM S3のGroveポートはGPIO 2(SDA)とGPIO 1(SCL)
}

void loop() {
  uint8_t x_data, y_data, button_data;
  Wire.requestFrom(JOY_ADDR, 3);  // 3バイトのデータをリクエスト
  if (Wire.available() >= 3) {
    x_data = Wire.read();
    y_data = Wire.read();
    button_data = Wire.read();
    Serial.printf("x:%d y:%d button:%d\n", x_data, y_data, button_data);
  } else {
    Serial.println("Failed to read from Joystick Unit");
  }
  delay(200);
}

コードの説明

必要なライブラリをインクルードします:

 #include  <M5AtomS3.h>  #include  <Wire.h>

Joystick UnitのI2Cアドレスを定義します:

 #define  JOY_ADDR 0x52

setup()関数で初期化を行います:

AtomS3.begin(false);  // LED無効化でAtomS3を初期化
Serial.begin(115200);
Wire.begin(2, 1);  // ATOM S3のGroveポートはGPIO 2(SDA)とGPIO 1(SCL)

loop()関数でJoystick Unitからデータを読み取り、シリアルモニターに出力します:

Wire.requestFrom(JOY_ADDR, 3);  // 3バイトのデータをリクエスト
if (Wire.available() >= 3) {
  x_data = Wire.read();
  y_data = Wire.read();
  button_data = Wire.read();
  Serial.printf("x:%d y:%d button:%d\n", x_data, y_data, button_data);
}

実行方法

  1. コードをArduino IDEにコピーペーストします。

  2. ボードとポートを正しく選択していることを確認します。

  3. コードをコンパイルしてアップロードします。

  4. シリアルモニターを開き、ボーレートを115200に設定します。

  5. ジョイスティックを動かすと、X軸、Y軸の値とボタンの状態がリアルタイムで表示されます。

データの解釈

  • X軸とY軸の値は0〜255の範囲で変化します。中心位置は約128です。

  • ボタンの値は、押されていない時は1、押された時は0です。

トラブルシューティング

  • データが読み取れない場合は、Grove ケーブルの接続を確認してください。

  • ATOM S3 LiteのGroveポートが正しく認識されているか確認してください。

  • Joystick Unitが故障していないか、別のデバイスで動作確認してみてください。

まとめ

この記事では、M5Stack ATOM S3 LiteでJoystick Unitを使用する方法を紹介しました。Grove接続のおかげで、セットアップが非常に簡単です。このコードを基に、ゲームコントローラーや様々な入力デバイスを作成できます。ぜひ自分なりにカスタマイズして、面白いプロジェクトを作ってみてください!

質問やコメントがあればぜひ下のコメント欄に書いてくださいね。ハッピーコーディング!

この記事が気に入ったらサポートをしてみませんか?