Basic output of force sensor data to serial, in form "value1/n"
Dependencies: mbed BLE_API nRF51822
Revision 6:dac42d8a8752, committed 2014-11-25
- Comitter:
- jstroud
- Date:
- Tue Nov 25 04:57:36 2014 +0000
- Parent:
- 5:19acba8bb777
- Commit message:
- Updated code with non-blocking sensor reading, fixed bluetooth, added "sleep when not connected to BLE" feature; ; Serial output format: "132" where 1 is sensor number, 32 is value from 0 - 99 of force sensor 1
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 19acba8bb777 -r dac42d8a8752 main.cpp --- a/main.cpp Tue Nov 25 03:28:30 2014 +0000 +++ b/main.cpp Tue Nov 25 04:57:36 2014 +0000 @@ -16,8 +16,6 @@ BLEDevice ble; DigitalOut led1(LED1); DigitalOut led2(LED2); - -DigitalOut powerSwitch(P0_0); AnalogIn strut1Force(P0_1); AnalogIn strut2Force(P0_2); @@ -26,6 +24,12 @@ AnalogIn seatForce(P0_5); AnalogIn cupBottomForce(P0_6); AnalogIn sensors[6] = {strut1Force, strut2Force, strut3Force, strut4Force, seatForce, cupBottomForce}; + +static volatile bool triggerSensorPolling = false; + +float sensorValues[6]; + +char buffer[6]; UARTService *uartServicePtr; @@ -36,8 +40,11 @@ ble.startAdvertising(); } + void onDataWritten(const GattCharacteristicWriteCBParams *params) { + //doSomething + /* if ((uartServicePtr != NULL) && (params->charHandle == uartServicePtr->getTXCharacteristicHandle())) { uint16_t bytesRead = params->len; DEBUG("received %u bytes\n\r", bytesRead); @@ -52,18 +59,20 @@ char buffer[4]; DEBUG("%1.2f,%1.2f,%1.2f,%1.2f,%1.2f,%1.2f\n", strut1Force.read(), strut2Force.read(), strut3Force.read(), strut4Force.read(), seatForce.read(), cupBottomForce.read()); // sprintf(buffer, "%1.2f,%1.2f,%1.2f,%1.2f\n", strut1Force.read(), strut2Force.read(), strut3Force.read(), strut4Force.read()); - ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t *)buffer, sizeof(&buffer)); + //ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t *)buffer, sizeof(&buffer)); for(int i=0; i <= 5; i++) { - sprintf(buffer, "%1.2f\n", i+0.1); + sprintf(buffer, "%1.2f\n", sensors[i].read()); ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t *)buffer, sizeof(&buffer)); } } + */ } void periodicCallback(void) { led1 = !led1; + triggerSensorPolling = true; } int main(void) @@ -71,7 +80,6 @@ led1 = 1; led2 = 0; - powerSwitch = 0; Ticker ticker; ticker.attach(periodicCallback, 1); @@ -95,6 +103,20 @@ uartServicePtr = &uartService; while (true) { + if(triggerSensorPolling /*&& ble.getGapState().connected*/ && uartServicePtr != NULL) { + triggerSensorPolling = false; + + for(int i = 0; i < 6; i++) { + sensorValues[i] = sensors[i].read()*100; + if(sensorValues[i] == 100) sensorValues[i] = 99; + + sprintf(buffer, "%d%2.0f", i,sensorValues[i]); + ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t *)buffer, sizeof(&buffer)); + } + DEBUG("trying to write values:\n%1.2f,%1.2f,%1.2f,%1.2f,%1.2f,%1.2f\n", strut1Force.read(), strut2Force.read(), strut3Force.read(), strut4Force.read(), seatForce.read(), cupBottomForce.read()); + + // do something + } ble.waitForEvent(); } }