#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
// UUIDs per il servizio BLE e le caratteristiche
#define SERVICE_UUID "79c79196-51cb-4f67-9520-9bc63e6597c1"
#define CHARACTERISTIC_UUID "e3038128-ca03-4f22-9f0d-b6547426dc6a"
// Pin dei pulsanti
const int buttonPins[] = {2, 4, 5, 18, 19};
// Stato dei pulsanti
bool buttonState[] = {false, false, false, false, false};
BLEServer* pServer = nullptr;
BLECharacteristic* pCharacteristic = nullptr;
void setup() {
Serial.begin(115200);
BLEDevice::init("ESP32_BLE_Server");
pServer = BLEDevice::createServer();
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
);
pService->start();
BLEAdvertising *pAdvertising = pServer->getAdvertising();
pAdvertising->start();
// Configura i pin dei pulsanti come input
for (int i = 0; i < 5; i++) {
pinMode(buttonPins[i], INPUT);
}
}
void loop() {
// Leggi lo stato dei pulsanti e invia i dati al client
for (int i = 0; i < 5; i++) {
buttonState[i] = digitalRead(buttonPins[i]);
}
// Invia lo stato dei pulsanti al client
pCharacteristic->setValue((uint8_t*)buttonState, 5);
pCharacteristic->notify();
delay(100);
}