#include <BLEAttribute.h>
#include <BLECentral.h>
#include <BLECharacteristic.h>
#include <BLECommon.h>
#include <BLEDescriptor.h>
#include <BLEPeripheral.h>
#include <BLEService.h>
#include <BLETypedCharacteristic.h>
#include <BLETypedCharacteristics.h>
#include <BLEUuid.h>
#include <CurieBLE.h>
const int ledPin = 13;
const int switchPin = 2;
BLEPeripheral blePeripheral;
BLEService ledService("19B10010-E8F2-537E-4F6C-D104768A1214");
BLECharCharacteristic ledCharacteristic("19B10011-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
BLECharCharacteristic switchCharacteristic("19B10012-E8F2-537E-4F6C-D104768A1214", BLERead | BLENotify);
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(switchPin, INPUT);
blePeripheral.setLocalName("DoorSwitch");
blePeripheral.setAdvertisedServiceUuid(ledService.uuid());
blePeripheral.addAttribute(ledService);
blePeripheral.addAttribute(ledCharacteristic);
blePeripheral.addAttribute(switchCharacteristic);
ledCharacteristic.setValue(0);
switchCharacteristic.setValue(0);
blePeripheral.begin();
Serial.println("Blueetooth device active, waiting for connections...");
}
void loop() {
blePeripheral.poll();
char switchValue = digitalRead(switchPin);
boolean switchChanged = (switchCharacteristic.value() != switchValue);
if (switchChanged) {
ledCharacteristic.setValue(switchValue);
switchCharacteristic.setValue(switchValue);
}
if(ledCharacteristic.written() || switchChanged) {
if (ledCharacteristic.value()){
Serial.println("LED on");
digitalWrite(ledPin, HIGH);
} else {
Serial.println("LED off");
digitalWrite(ledPin, LOW);
}
}
}
Comments