#include #include //using Arduino Uno WiFi Rev2 bool channelToUse = false; const int characteristicSize = 128; int channelA = 0; int channelB = 0; // create service and characteristics: BLEService stringService("7DEF8317-7300-4EE6-8849-46FACE74CA2A"); BLEStringCharacteristic txCharacteristic("7DEF8317-7301-4EE6-8849-46FACE74CA2B", BLERead | BLENotify, characteristicSize); BLEStringCharacteristic rxCharacteristic("7DEF8317-7302-4EE6-8849-46FACE74CA2C", BLEWrite, characteristicSize); void setup() { // initialize serial and BLE: pinMode(10, OUTPUT); pinMode(9, OUTPUT); SPI.begin(); Serial.begin(9600); //Serial1.begin(9600); if (!BLE.begin()) { Serial.println("starting BLE failed!"); while (true) ; } // use the builtin LED as a connect/disconnect handler: pinMode(LED_BUILTIN, OUTPUT); // set the local name peripheral advertises: BLE.setLocalName("Power Supply"); // set the UUID for the service this peripheral advertises: BLE.setAdvertisedService(stringService); // add the characteristics to the service: stringService.addCharacteristic(txCharacteristic); stringService.addCharacteristic(rxCharacteristic); // assign event handlers for connected, disconnected to peripheral BLE.setEventHandler(BLEConnected, connectHandler); BLE.setEventHandler(BLEDisconnected, disconnectHandler); // assign event handler for rx characteristic: rxCharacteristic.setEventHandler(BLEWritten, incomingDataHandler); // add the service and set a value for the characteristic: BLE.addService(stringService); // start advertising BLE.advertise(); } void loop() { // Listen for events: BLE.poll(); //Serial.println(channelA); //Serial.println(channelB); //Serial.println("BREAK"); digitalWrite(10, LOW); SPI.transfer(0x00); //change to actual address later SPI.transfer(channelA); //will prob be some other value later digitalWrite(10, HIGH); digitalWrite(9, LOW); SPI.transfer(0x00); //change to actual address later SPI.transfer(channelB); //will prob be some other value later digitalWrite(9, HIGH); // if a serial string comes in, set it in the txCharacteristic: /*if (Serial.available()) { txCharacteristic.setValue(Serial.readString()); }*/ } void connectHandler(BLEDevice central) { // central connected event handler Serial.print("Connected event, central: "); Serial.println(central.address()); digitalWrite(LED_BUILTIN, HIGH); } void disconnectHandler(BLEDevice central) { // central disconnected event handler Serial.print("Disconnected event, central: "); Serial.println(central.address()); digitalWrite(LED_BUILTIN, LOW); } void incomingDataHandler(BLEDevice central, BLECharacteristic characteristic) { // central wrote new value to characteristic, update LED Serial.print("Characteristic event, written: "); Serial.println(rxCharacteristic.value()); String signal = rxCharacteristic.value(); int numSignal = 0; Serial.println(signal); if(signal[3] == 'A') { channelA = signal.substring(0,3).toInt(); } else if(signal[3] == 'B') { channelB = signal.substring(0,3).toInt(); } //Serial1.println(signal); /* //Serial.println(signal[signal.length()-1]); if(signal.endsWith("A")) { Serial.println("hello"); //set channel bit to A channel digitalWrite(8, HIGH); } else { Serial.println("hi"); //set channel bit for B channel digitalWrite(8, LOW); } signal.remove(signal.length()-1); Serial.println(signal); numSignal = signal.toInt(); Serial.println(numSignal); //doesnt recognize ints as pin numbers digitalWrite(0, bitRead(numSignal, 0)); digitalWrite(1, bitRead(numSignal, 1)); digitalWrite(2, bitRead(numSignal, 2)); digitalWrite(3, bitRead(numSignal, 3)); digitalWrite(4, bitRead(numSignal, 4)); digitalWrite(5, bitRead(numSignal, 5)); digitalWrite(6, bitRead(numSignal, 6)); digitalWrite(7, bitRead(numSignal, 7)); //make update bit high, creates rising edge digitalWrite(9, HIGH); delay(1000); //make update bit 0, reset to low digitalWrite(9, LOW); */ }