Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BLE_nRF8001 Motordriver mbed
Fork of adrianrobotproject by
Revision 1:81cca0074c0d, committed 2015-04-22
- Comitter:
- awinata
- Date:
- Wed Apr 22 23:19:46 2015 +0000
- Parent:
- 0:1be634fcf3e8
- Commit message:
- First Release
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Thu Apr 16 21:07:54 2015 +0000 +++ b/main.cpp Wed Apr 22 23:19:46 2015 +0000 @@ -11,94 +11,94 @@ Serial serial(USBTX, USBRX); // The SPI construct, REQN and RDYN IO construct should be modified manually // It depend on the board you are using and the REQN&RDYN configuration on BLE Shield -SPI spi(p5, p6, p7); -DigitalInOut BLE_RDY(p8); +SPI spi(p5, p6, p7); +DigitalInOut BLE_RDY(p8); DigitalInOut BLE_REQ(p9); DigitalInOut BLE_RST(p10); -//Motor Pins -Motor left(p21, p22, p23, 1); //pwm fwd ref has brake feature +// Motor pins +Motor left(p21, p22, p23, 1); // pwm, fwd, rev, has brake feature Motor right(p26,p25,p24, 1); -//maybe ir sensors +// IR sensors +//AnalogIn ir_c(p20); // center +//AnalogIn ir_l(p19); // left +//AnalogIn ir_r(p18); // right /*----- BLE Utility -------------------------------------------------------------------------*/ // create peripheral instance, see pinouts above BLEPeripheral blePeripheral = BLEPeripheral(&BLE_REQ, &BLE_RDY, &BLE_RST); - + // create service BLEService uartService = BLEService("713d0000503e4c75ba943148f18d941e"); - + // create characteristic BLECharacteristic txCharacteristic = BLECharacteristic("713d0002503e4c75ba943148f18d941e", BLENotify, 20); BLECharacteristic rxCharacteristic = BLECharacteristic("713d0003503e4c75ba943148f18d941e", BLEWriteWithoutResponse, 20); /*--------------------------------------------------------------------------------------------*/ - +// Bluetooth variables unsigned char buf[16] = {0}; unsigned char len = 0; +// Motor variables +float leftval = 0; +float rightval = 0; int main() { - - serial.baud(9600); - serial.printf("Serial begin!\r\n"); - -/*----- BLE Utility ---------------------------------------------*/ - // set advertised local name and service UUID - blePeripheral.setLocalName("BLE Shield"); - - blePeripheral.setAdvertisedServiceUuid(uartService.uuid()); - - // add service and characteristic - blePeripheral.addAttribute(uartService); - blePeripheral.addAttribute(rxCharacteristic); - blePeripheral.addAttribute(txCharacteristic); - - // begin initialization - blePeripheral.begin(); -/*---------------------------------------------------------------*/ - serial.printf("BLE UART Peripheral begin!\r\n"); - - while(1) - { - BLECentral central = blePeripheral.central(); - - if (central) - { - // central connected to peripheral - serial.printf("Connected to central\r\n"); - - int count = 0; - float leftval = 0; - float rightval = 0; - while (central.connected()) - { - // central still connected to peripheral - if (rxCharacteristic.written()) - { - count = 0; - unsigned char len = rxCharacteristic.valueLength(); - const unsigned char *val = rxCharacteristic.value(); - - //1 = north, 2 = south, 3 = east, 4 = west - leftval = sqrt(pow((float)val[0]/255,2) + pow((float)val[2]/255,2)) - sqrt(pow((float)val[1]/255,2) + pow((float)val[3]/255,2)); - rightval = sqrt(pow((float)val[0]/255,2) + pow((float)val[3]/255,2)) - sqrt(pow((float)val[1]/255,2) + pow((float)val[2]/255,2)); - - if (leftval > 1) leftval = 1; - if (leftval < -1) leftval = -1; - if (rightval > 1) rightval = 1; - if (rightval < -1) rightval = -1; - - left.speed(leftval); - right.speed(rightval); - - serial.printf("%f, %f\n", leftval, rightval); - } + //serial.baud(9600); + //serial.printf("Serial begin!\r\n"); + + /*----- BLE Utility ---------------------------------------------*/ + // set advertised local name and service UUID + blePeripheral.setLocalName("BLE Shield"); + + blePeripheral.setAdvertisedServiceUuid(uartService.uuid()); + + // add service and characteristic + blePeripheral.addAttribute(uartService); + blePeripheral.addAttribute(rxCharacteristic); + blePeripheral.addAttribute(txCharacteristic); + + // begin initialization + blePeripheral.begin(); + //serial.printf("BLE UART Peripheral begin!\r\n"); + /*---------------------------------------------------------------*/ + + while(1) { + BLECentral central = blePeripheral.central(); + + if(central) { + // central connected to peripheral + //serial.printf("Connected to central\r\n"); + + while (central.connected()) { + // central still connected to peripheral + if (rxCharacteristic.written()) { + unsigned char len = rxCharacteristic.valueLength(); + const unsigned char *val = rxCharacteristic.value(); + + // Calculate differential motor values from cartesian joystick coordinates + // 0 = north, 1 = south, 2 = east, 3 = west + leftval = sqrt(pow((float)val[0]/255,2) + pow((float)val[2]/255,2)) - sqrt(pow((float)val[1]/255,2) + pow((float)val[3]/255,2)); + rightval = sqrt(pow((float)val[0]/255,2) + pow((float)val[3]/255,2)) - sqrt(pow((float)val[1]/255,2) + pow((float)val[2]/255,2)); + + // Windup compensation + if (leftval > 1) leftval = 1; + if (leftval < -1) leftval = -1; + if (rightval > 1) rightval = 1; + if (rightval < -1) rightval = -1; + + // Set motor speed values + left.speed(leftval); + right.speed(rightval); + + //serial.printf("%f, %f\n", leftval, rightval); + } + } + // central disconnected + //serial.printf("Disconnected from central\r\n"); } - // central disconnected - serial.printf("Disconnected from central\r\n"); - } } } \ No newline at end of file
--- a/mbed.bld Thu Apr 16 21:07:54 2015 +0000 +++ b/mbed.bld Wed Apr 22 23:19:46 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/487b796308b0 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/433970e64889 \ No newline at end of file