![見出し画像](https://assets.st-note.com/production/uploads/images/147652778/rectangle_large_type_2_7fc8a022abe699627c7a940ab4099723.png?width=1200)
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)
セットアップ
Grove ケーブルを使用して、Joystick UnitをATOM S3 Liteに接続します。
ATOM S3 LiteのGroveポートは、以下のピンに対応しています:SDA → GPIO 2
SCL → GPIO 1
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);
}
実行方法
コードをArduino IDEにコピーペーストします。
ボードとポートを正しく選択していることを確認します。
コードをコンパイルしてアップロードします。
シリアルモニターを開き、ボーレートを115200に設定します。
ジョイスティックを動かすと、X軸、Y軸の値とボタンの状態がリアルタイムで表示されます。
データの解釈
X軸とY軸の値は0〜255の範囲で変化します。中心位置は約128です。
ボタンの値は、押されていない時は1、押された時は0です。
トラブルシューティング
データが読み取れない場合は、Grove ケーブルの接続を確認してください。
ATOM S3 LiteのGroveポートが正しく認識されているか確認してください。
Joystick Unitが故障していないか、別のデバイスで動作確認してみてください。
まとめ
この記事では、M5Stack ATOM S3 LiteでJoystick Unitを使用する方法を紹介しました。Grove接続のおかげで、セットアップが非常に簡単です。このコードを基に、ゲームコントローラーや様々な入力デバイスを作成できます。ぜひ自分なりにカスタマイズして、面白いプロジェクトを作ってみてください!
質問やコメントがあればぜひ下のコメント欄に書いてくださいね。ハッピーコーディング!