Funciona no redbear
Dependencies: BLE_API mbed nRF51822
Fork of BLE_LED_Controller by
Diff: main.cpp
- Revision:
- 15:016434184568
- Parent:
- 14:8ff3bfb6b19d
- Child:
- 16:bfbf1982815e
--- a/main.cpp Wed Dec 17 22:47:39 2014 +0000 +++ b/main.cpp Thu Dec 18 21:14:19 2014 +0000 @@ -28,15 +28,15 @@ #define DEBUG(...) /* nothing */ #endif /* #if NEED_CONSOLE_OUTPUT */ -#define LED2OFF "led2 off" -#define LED2ON "led2 on" +#define LED2CMD "led2" +#define CMD_LENGTH 4 //char rxPayload[CMD_SIZE]; BLEDevice ble; // Create Bluetooth object DigitalOut led1(LED1); // Set the pin attached to LED1 as an output -DigitalOut led2(LED2); // Set the pin attached to LED2 as an output +PwmOut led2(LED2); // Set the pin attached to LED2 as an output UARTService *uartServicePtr; @@ -56,10 +56,14 @@ DEBUG("Received string: '"); DEBUG((const char *)params->data); //Note the size of data expands to the largest string received. Need to use bytesRead to resize. DEBUG("'\n\r"); - if (!strncmp(LED2ON,(const char *)params->data,bytesRead)) led2 = 1; // If the received and command string are equal turn led2 on. Note strcmp returns 0 if strings are equal - if (!strncmp(LED2OFF,(const char *)params->data,bytesRead)) led2 = 0; // If the received and command string are equal turn led2 off. - //Toggle LED2 when data received - ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), params->data, bytesRead); // Echo received characters back over BLE + if (!strncmp(LED2CMD,(const char *)params->data,CMD_LENGTH-1)){ + float value; + char cmd[CMD_LENGTH]; + sscanf((const char *)params->data, "%s %f", cmd, &value ); + led2 = value; + DEBUG("Cmd: %s LED Level = %f\n\r", cmd, value); + } + ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), params->data,bytesRead); // Echo received characters back over BLE } } @@ -72,7 +76,7 @@ int main(void) { led1 = 1; - led2 = 0; + led2 = 0.5; Ticker ticker; // Create period timer ticker.attach(periodicCallback, 1); // Attach ticker callback function with a period of 1 second