segway_self balancing robot 4180 project
Dependencies: mbed mbed-rtos LSM9DS1_Library
main.cpp
- Committer:
- lrucker7
- Date:
- 2020-04-18
- Revision:
- 11:c669b4dc1f9f
- Parent:
- 9:28821420f7a4
- Child:
- 12:980c06d63425
File content as of revision 11:c669b4dc1f9f:
#include "mbed.h" #include "rtos.h" DigitalOut myled(LED2); Ticker bluetooth; Serial pc(USBTX, USBRX); Mutex parametersmutex; //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; while(1){ if (blue.getc()=='!') { if (blue.getc()=='B') { //button data packet bnum = blue.getc(); //button number //pc.printf("%d",bnum); bhit = blue.getc(); //1=hit, 0=release parametersmutex.lock(); 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; } } parametersmutex.unlock(); } } Thread::wait(100); } } int main() { pc.printf("this is running"); Thread bluetooth; bluetooth.start(bluetooth_update); //bluetooth.attach(&bluetooth_update, 0.1); while(1) { //bluetooth_update(); parametersmutex.lock(); pc.printf("rp: %f, rd: %f, ri: %f, desired_angle: %f\n", rp, rd, ri, desired_angle); parametersmutex.unlock(); Thread::wait(100); } }