M5Stack/Stick/AtomでBluetoothを使う情報があまりなかったので備忘録
BLEDevice関連ライブラリに含まれる関数の一覧と説明(リファレンス作りました)
BLEDevice
- init(std::string deviceName)
概要: BLEデバイスを初期化し、デバイス名を設定します。最初に必ず呼び出します。
#include <BLEDevice.h>
void setup() {
BLEDevice::init("M5Stack_BLE_Server");
}2. createServer()
概要: 新しいBLEサーバーを作成します。サービスを作成するために使います。
BLEServer *pServer;
void setup() {
BLEDevice::init("M5Stack_BLE_Server");
pServer = BLEDevice::createServer();
}3. createClient()
新しいBLEクライアントを作成します。サーバーに接続するために使います。
BLEClient *pClient;
void setup() {
BLEDevice::init("");
pClient = BLEDevice::createClient();
} 4. getScan()
スキャン用のBLEScanオブジェクトを取得します。スキャン開始などに使います。
BLEScan *pScan;
void setup() {
BLEDevice::init("");
pScan = BLEDevice::getScan();
}BLEServer Class
- createService(const char* uuid)
指定したUUIDを持つサービスを作成します。
BLEServer *pServer;
BLEService *pService;
void setup() {
BLEDevice::init("M5Stack_BLE_Server");
pServer = BLEDevice::createServer();
pService = pServer->createService("12345678-1234-5678-1234-56789abcdef0");
}2. getAdvertising()
広告(アドバタイジング)オブジェクトを取得します。startAdvertising()と組み合わせます。
BLEAdvertising *pAdvertising;
void setup() {
BLEDevice::init("M5Stack_BLE_Server");
pAdvertising = BLEDevice::createServer()->getAdvertising();startAdvertising()
広告を開始してクライアントからの接続を待ち受けます。
BLEServer *pServer;
void setup() {
BLEDevice::init("M5Stack_BLE_Server");
pServer = BLEDevice::createServer();
pServer->getAdvertising()->start();
}BLEClient Class
connect(BLEAdvertisedDevice* device)
スキャンして見つけたBLEデバイスに接続します。
BLEClient *pClient;
BLEAdvertisedDevice myDevice; // ※通常はスキャン結果から取得
void setup() {
BLEDevice::init("");
pClient = BLEDevice::createClient();
pClient->connect(&myDevice);
}disconnect()
現在接続中のデバイスとの接続を切断します。
void loop() {
if (pClient->isConnected()) {
pClient->disconnect();
}
}使い方の例
- I2C通信の初期化
M5_EXTIO2 extio2;
if (extio2.begin(&Wire, 21, 22)) {
Serial.println("EXTIO2 Initialized");
} else {
Serial.println("EXTIO2 Initialization Failed");
}2. ピンモードの設定
・全ピンを入力モードに設定する:
extio2.setAllPinMode(DIGITAL_INPUT_MODE);・ピン2を出力モードに設定する:
extio2.setPinMode(2, DIGITAL_OUTPUT_MODE);3. デジタル出力
・ピン3をHIGHに設定:
extio2.setDigitalOutput(3, 1);・全ピンを一括設定:
extio2.setAllDigitalOutputs(0b10101010);4. アナログ入力の読み取り
uint16_t analogValue = extio2.getAnalogInput(0, _12bit);
Serial.println(analogValue);m5Atom matrixの場合、通常のi2C(Wire: SDA=21, SCL=25)がすでにDisplay用で使われているので、
もう一つのi2C(Wire1: SDA=26, SCL=32)を使います。
これを使って前回のコードを直していきます(この件だいぶ悩みました…💦)

