TJ9 BLE CrossKeyコントローラーのESP32へ書き込むソースファイル
(2020年5月29日)

コピーしてArduino IDEに貼り付けて下さい。
/*I referred BLE notify from the sketch example of ESP32 BLE Arduino.*/

#include "BLEDevice.h"
#include "BLE2902.h"

BLECharacteristic *pCharacteristic;
bool deviceConnected = false;

char val;

//Get your UUID from Online UUID Generator.
//https://www.uuidgenerator.net/version4
#define SERVICE_UUID        "********-****-****-*****-************"
#define CHARACTERISTIC_UUID "********-****-****-*****-************"
#define DEVICE_NAME         "esp32_BLE"

class MyServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      deviceConnected = true;
    };

    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
};

void setup() {
  Serial.begin(115200);
  pinMode(12, INPUT_PULLUP); //F
  pinMode(13, INPUT_PULLUP); //B
  pinMode(14, INPUT_PULLUP); //L
  pinMode(25, INPUT_PULLUP); //R
  
  BLEDevice::init(DEVICE_NAME);
  BLEServer *pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallbacks());
  BLEService *pService = pServer->createService(SERVICE_UUID);
  pCharacteristic = pService->createCharacteristic(
                      CHARACTERISTIC_UUID,
                      BLECharacteristic::PROPERTY_READ   |
                      BLECharacteristic::PROPERTY_WRITE  |
                      BLECharacteristic::PROPERTY_NOTIFY |
                      BLECharacteristic::PROPERTY_INDICATE
                    );

  pCharacteristic->addDescriptor(new BLE2902());
  pService->start();
  pServer->getAdvertising()->start();
  Serial.println("Waiting a client connection to notify...");
}

void loop() {
  int val_F = digitalRead(12);//F
  if (val_F == 0) {
    val = 'F';
  }
  int val_B = digitalRead(13);//B
  if (val_B == 0) {
    val = 'B';
  }
  int val_L = digitalRead(14);//L
  if (val_L == 0) {
    val = 'L';
  }
  int val_R = digitalRead(25);//R
  if (val_R == 0) {
    val = 'R';
  }
  int val_S;
  if ((val_L & val_R & val_F & val_B)==1) {
    val = 'S';
  }

  if (deviceConnected) {
    Serial.printf("*** NOTIFY: %d ***\n", val);
    char buffer[10];
    sprintf(buffer, "%d", val );
    pCharacteristic->setValue(buffer);
    pCharacteristic->notify();
  }
  delay(200);
}

元のページヘ戻る