segway_self balancing robot 4180 project
Dependencies: mbed mbed-rtos LSM9DS1_Library
Diff: main.cpp
- Revision:
- 7:8af26d50c006
- Parent:
- 6:0bff4e260db2
- Child:
- 8:2332c4a79276
diff -r 0bff4e260db2 -r 8af26d50c006 main.cpp --- a/main.cpp Thu Apr 09 20:43:23 2020 +0000 +++ b/main.cpp Sat Apr 18 19:37:27 2020 +0000 @@ -2,12 +2,96 @@ DigitalOut myled(LED2); -int main() { - while(1) { - myled = 1; - wait(0.2); - myled = 0; - wait(0.2); +Ticker bluetooth; +Serial pc(USBTX, USBRX); + + +//Control system variables +float rp = 50; +float rd = 51; +float ri = 50; +float desired_angle = 0; +Serial blue(p28,p27); + +void bluetooth_update() { + char bnum=0; + char bhit=0; + if (blue.getc()=='!') { + if (blue.getc()=='B') { //button data packet + bnum = blue.getc(); //button number + bhit = blue.getc(); //1=hit, 0=release + if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK? + myled = bnum - '0'; //current button number will appear on LEDs + switch (bnum) { + case '1': //number button 1 + if (bhit=='1') { + rd += 1; + } else { + //add release code here + } + break; + case '2': //number button 2 + if (bhit=='1') { + ri += 1; + } else { + //add release code here + } + break; + case '3': //number button 3 + if (bhit=='1') { + rd -= 1; + } else { + //add release code here + } + break; + case '4': //number button 4 + if (bhit=='1') { + ri -= 1; + } else { + //add release code here + } + break; + case '5': //button 5 up arrow + if (bhit=='1') { + rp += 1; + } else { + //add release code here + } + break; + case '6': //button 6 down arrow + if (bhit=='1') { + rp -= 1; + } else { + //add release code here + } + break; + case '7': //button 7 left arrow + if (bhit=='1') { + desired_angle -= 1; + } else { + //add release code here + } + break; + case '8': //button 8 right arrow + if (bhit=='1') { + desired_angle += 1; + } else { + //add release code here + } + break; + default: + break; + } + } + } } } -//hi + +int main() { + pc.printf("this is running"); + bluetooth.attach(&bluetooth_update, 0.1); + while(1) { + pc.printf("rp: %f, rd: %f, ri: %f, desired_angle: %f", rp, rd, ri, desired_angle); + } +} +