M5Atom Lite S3: Grove端子をGPIOとして活用しよう!
※以下の記事はGemini 1.5 Promに記載してもらいました。実際の動作は確認済みです。
M5Atom Lite S3は、コンパクトながら豊富な機能を備えた開発ボードですが、GPIOの数が限られている点が悩ましい場合もあります。しかし、ご安心ください!Grove端子をGPIOとして活用することで、接続できるデバイスの幅が大きく広がります。
今回は、Grove端子(Port B)にDual Button Unitを接続し、GPIO入力の基本をマスターします。
はじめに
M5Atom Lite S3は、Groveコネクタを通じて様々なセンサーやデバイスを簡単に接続できるのが魅力です。しかし、Groveコネクタは、専用のGroveモジュールを使うことを前提としているため、GPIOとして利用する際には一手間必要となります。
本記事では、Grove端子(Port B)をGPIOとして利用する方法を解説し、Dual Button Unitを接続してボタン入力のプログラムを作成します。
Grove端子をGPIOとして使う
M5Atom Lite S3のGrove端子(Port B)は、以下のGPIOに接続されています。
GPIO1 (Pin 1)
GPIO2 (Pin 2)
これらのGPIOを直接操作することで、Groveコネクタに接続したデバイスを制御することができます。
ソフトウェアの準備
以下のコードを`src/main.cpp`にコピー&ペーストします。
#include <M5AtomS3.h>
const uint8_t pin1 = 1; // M5AtomLite S3 Grove PortB Pin 1 (GPIO1)
const uint8_t pin2 = 2; // M5AtomLite S3 Grove PortB Pin 2 (GPIO2)
void setup() {
AtomS3.begin(false); // LED無効化でAtomS3を初期化
Serial.begin(115200);
delay(100);
pinMode(pin1, INPUT);
pinMode(pin2, INPUT);
}
void loop() {
Serial.printf("Blue Button=%d, Red Button=%d\n", digitalRead(pin1), digitalRead(pin2));
delay(100);
}
コード解説
`#include <M5AtomS3.h>`: M5AtomS3ライブラリをインクルードします。
`const uint8_t pin1 = 1;`: 青ボタンのピン番号をGPIO1に設定しています。
`const uint8_t pin2 = 2;`: 赤ボタンのピン番号をGPIO2に設定しています。
`AtomS3.begin(false);`: M5AtomS3を初期化します。LEDを無効にするため、`false` を指定しています。
`Serial.begin(115200);`: シリアル通信を初期化します。
`pinMode(pin1, INPUT);`: 青ボタンピンを入力に設定します。
`pinMode(pin2, INPUT);`: 赤ボタンピンを入力に設定します。
`digitalRead(pin1)`: 青ボタンの状態を読み取ります。
`digitalRead(pin2)`: 赤ボタンの状態を読み取ります。
動作確認
青ボタン、赤ボタンを押した時と離した時、シリアルモニターにボタンの状態が出力されることを確認します。
まとめ
今回は、M5Atom Lite S3のGrove端子(Port B)をGPIOとして利用する方法を解説し、Dual Button Unitを接続してボタン入力を行うプログラムを作成しました。
Grove端子をGPIOとして活用することで、M5Atom Lite S3の拡張性を更に広げることが可能になります。
(追記) Grove端子とGPIOの関係
M5Atom Lite S3のGrove端子は、特定のGPIOに接続されています。今回の例では、Grove BポートのPin 1がGPIO1、Pin 2がGPIO2に接続されていることを利用しました。
他のGroveポートも同様に、対応するGPIOが割り当てられています。公式ドキュメントやピン配置図を参照することで、各GroveポートとGPIOの対応関係を確認することができます。
この知識を活用すれば、Groveコネクタに接続できないデバイスでも、GPIOを直接操作することでM5Atom Lite S3と連携させることが可能になります。