- 必要なライブラリをインクルードします。
#include <ArduinoBLE.h>
- 定数を設定します。UUIDはジェネレータなどで生成してください。
#define DEVICE_NAME "DEMO"
#define SERVICE_UUID "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
#define CHARACTERISTIC_UUID "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
- 初期化
BLEService bleService(SERVICE_UUID);
BLECharacteristic bleCharacteristic(CHARACTERISTIC_UUID, BLERead | BLEWrite, 20);
- イベントハンドラを追加します。
/**
* 書き込み時のイベントハンドラ
*/
void written(BLEDevice central, BLECharacteristic characteristic) {
Serial.print("onWrite: ");
String value = "";
for (int i = 0; i < characteristic.valueLength(); i++) {
value += (char)characteristic.value()[i];
}
Serial.println(value);
}
/**
* 読み込み時のイベントハンドラ
*/
void read(BLEDevice central, BLECharacteristic characteristic) {
Serial.print("read: ");
std::string value = "Hello world!";
characteristic.writeValue(value.c_str());
}
- BLEをセットアップします。
void setup() {
if (!BLE.begin()) {
Serial.println("starting Bluetooth® Low Energy module failed!");
while (1);
}
BLE.setLocalName(DEVICE_NAME);
BLE.setAdvertisedService(bleService);
bleService.addCharacteristic(bleCharacteristic);
BLE.addService(bleService);
bleCharacteristic.setEventHandler(BLERead, read);
bleCharacteristic.setEventHandler(BLEWritten, written);
BLE.advertise();
}
- メインループ
void loop() {
BLE.poll();
}
- 全体
#include <Arduino.h>
#include <ArduinoBLE.h>
#define DEVICE_NAME "DEMO"
#define SERVICE_UUID "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
#define CHARACTERISTIC_UUID "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
BLEService bleService(SERVICE_UUID);
BLECharacteristic bleCharacteristic(CHARACTERISTIC_UUID, BLERead | BLEWrite, 20);
/**
* 書き込み時のイベントハンドラ
*/
void characteristicWritten(BLEDevice central, BLECharacteristic characteristic) {
Serial.print("onWrite: ");
String value = "";
for (int i = 0; i < characteristic.valueLength(); i++) {
value += (char)characteristic.value()[i];
}
Serial.println(value);
}
/**
* 読み込み時のイベントハンドラ
*/
void read(BLEDevice central, BLECharacteristic characteristic) {
Serial.print("read: ");
std::string value = "Hello world!";
characteristic.writeValue(value.c_str());
}
/**
* 初期化
*/
void setup() {
// シリアルポートを初期化
Serial.begin(115200);
while (!Serial);
if (!BLE.begin()) {
Serial.println("starting Bluetooth® Low Energy module failed!");
while (1);
}
BLE.setLocalName(DEVICE_NAME);
BLE.setAdvertisedService(bleService);
bleService.addCharacteristic(bleCharacteristic);
BLE.addService(bleService);
bleCharacteristic.setEventHandler(BLERead, read);
bleCharacteristic.setEventHandler(BLEWritten, written);
BLE.advertise();
}
/**
* メインループ
*/
void loop() {
BLE.poll();
}