#include<LBLE.h>#include<LBLEPeriphral.h>#defineLED_G10#defineLED_B11#defineLED_R12
String Send_Data;
String SA[2];int A[2];// Define a simple GATT service with only 1 characteristic
LBLEService ledService("19B10010-E8F2-537E-4F6C-D104768A1214");//LBLECharacteristicInt switchCharacteristic("19B10011-E8F2-537E-4F6C-D104768A1214", LBLE_READ | LBLE_WRITE);
LBLECharacteristicString switchCharacteristic("19B10011-E8F2-537E-4F6C-D104768A1214", LBLE_READ | LBLE_WRITE);voidsetup(){pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, LOW);
Serial.begin(9600);//初始化BLE
Serial.println("BLE begin");
LBLE.begin();while(!LBLE.ready()){delay(100);}
Serial.println("BLE ready");
Serial.print("device address is:");
Serial.println(LBLE.getDeviceAddress());//顯示7697 BLE addr//設定廣播資料// In this case, we simply create an advertisement that represents an// connectable device with a device name
LBLEAdvertisementData advertisement;
advertisement.configAsConnectableDevice("BLE Jack");// Configure our device's Generic Access Profile's device name// Ususally this is the same as the name in the advertisement data.
LBLEPeripheral.setName("BLE Jack");// Add characteristics into ledService
ledService.addAttribute(switchCharacteristic);// Add service to GATT server (peripheral)
LBLEPeripheral.addService(ledService);//啟動GATT伺服器,此時已可被連線
LBLEPeripheral.begin();//開始廣播
LBLEPeripheral.advertise(advertisement);}voidloop(){if(switchCharacteristic.isWritten()){
String value = switchCharacteristic.getValue();String_to_Int(value,2);
Serial.print(SA[0]);
Serial.print(",");
Serial.println(A[1]);if(SA[0]=="G"){if(A[1]==1){digitalWrite(LED_G, HIGH);
Send_Data ="Green ON";
switchCharacteristic.setValue(Send_Data);}if(A[1]==0){digitalWrite(LED_G, LOW);
Send_Data ="Green OFF";
switchCharacteristic.setValue(Send_Data);}
value ="";}if(SA[0]=="B"){if(A[1]==1){digitalWrite(LED_B, HIGH);
Send_Data ="Blue ON";
switchCharacteristic.setValue(Send_Data);}if(A[1]==0){digitalWrite(LED_B, LOW);
Send_Data ="Blue OFF";
switchCharacteristic.setValue(Send_Data);}
value ="";}if(SA[0]=="R"){if(A[1]==1){digitalWrite(LED_R, HIGH);
Send_Data ="Red ON";
switchCharacteristic.setValue(Send_Data);}if(A[1]==0){digitalWrite(LED_R, LOW);
Send_Data ="Red OFF";
switchCharacteristic.setValue(Send_Data);}
value ="";}}delay(100);}voidString_to_Int(String temp,int count){int index;
index = temp.indexOf(',');
SA[0]= temp.substring(0, index);for(int i =1; i < count; i++){
temp = temp.substring(index +1, temp.length());
index = temp.indexOf(',');
SA[i]= temp.substring(0, index);
A[i]= SA[i].toInt();}}