Sille Van Landschoot / Mbed 2 deprecated m3Dpi-helloworld

Dependencies:   m3Dpi mbed-rtos mbed MbedJSONValue

Committer:
sillevl
Date:
Wed Aug 30 11:54:19 2017 +0000
Revision:
17:b73fcdb828f3
Parent:
16:0043244f8a61
demo distance sensors

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sillevl 7:9068fc754a0b 1 #include "mbed.h"
sillevl 14:06576ab99415 2 #include "rtos.h"
sillevl 1:6f620263c9f8 3 #include "M3Dpi.h"
sillevl 7:9068fc754a0b 4 #include "jsonReporter.h"
sillevl 13:d6374484b953 5 #include "binaryReporter.h"
sillevl 6:414e1fea64f3 6
sillevl 14:06576ab99415 7 const char M3DPI_ID[] = "1234567890";
sillevl 6:414e1fea64f3 8
sillevl 7:9068fc754a0b 9 M3Dpi robot;
sillevl 7:9068fc754a0b 10 Serial pc(USBTX,USBRX);
sillevl 16:0043244f8a61 11 Reporter* report = new JsonReporter(&robot.xbee, M3DPI_ID);
sillevl 11:ccb8653e285f 12
sillevl 11:ccb8653e285f 13 m3dpi::Distance distance;
sillevl 11:ccb8653e285f 14 m3dpi::Direction direction;
sillevl 11:ccb8653e285f 15 m3dpi::Rotation rotation;
sillevl 11:ccb8653e285f 16 m3dpi::Acceleration acceleration;
sillevl 6:414e1fea64f3 17
sillevl 6:414e1fea64f3 18
sillevl 6:414e1fea64f3 19 void setLeds(m3dpi::Distance distance)
sillevl 6:414e1fea64f3 20 {
sillevl 6:414e1fea64f3 21 int colors[8] = {distance.front, distance.front_right, distance.right, distance.back_right, distance.back, distance.back_left, distance.left, distance.front_left};
sillevl 6:414e1fea64f3 22 // shift distance value to get red colors
sillevl 6:414e1fea64f3 23 for(int i = 0; i < 8; i++){
sillevl 17:b73fcdb828f3 24 //colors[i] = ((~(colors[i]*2)) & 0xFF) << 16;
sillevl 17:b73fcdb828f3 25 if(colors[i] < 50) {colors[i] = Color::RED;}
sillevl 17:b73fcdb828f3 26 else if(colors[i] < 100) {colors[i] = Color::YELLOW;}
sillevl 17:b73fcdb828f3 27 else if(colors[i] < 150) {colors[i] = Color::GREEN;}
sillevl 17:b73fcdb828f3 28 else{colors[i] = Color::BLACK;}
sillevl 6:414e1fea64f3 29 }
sillevl 6:414e1fea64f3 30 robot.setLeds(colors);
sillevl 6:414e1fea64f3 31 }
sillevl 6:414e1fea64f3 32
sillevl 14:06576ab99415 33 void read_sensors_task(void const *name)
sillevl 6:414e1fea64f3 34 {
sillevl 14:06576ab99415 35 //Timer t; t.start();
sillevl 17:b73fcdb828f3 36 robot.setStatus(Color::BLACK);
sillevl 11:ccb8653e285f 37 ::distance = robot.getDistance();
sillevl 17:b73fcdb828f3 38 //direction = robot.getDirection();
sillevl 17:b73fcdb828f3 39 //rotation = robot.getRotation();
sillevl 17:b73fcdb828f3 40 //acceleration = robot.getAcceleration();
sillevl 11:ccb8653e285f 41 setLeds(::distance);
sillevl 17:b73fcdb828f3 42 robot.setStatus(Color::RED);
sillevl 14:06576ab99415 43 //t.stop();pc.printf("*** Sensor acquisition time: %d us\r\n", t.read_us());
sillevl 14:06576ab99415 44 }
sillevl 14:06576ab99415 45
sillevl 14:06576ab99415 46 void report_task(void const *name)
sillevl 14:06576ab99415 47 {
sillevl 14:06576ab99415 48 //Timer t; t.start();
sillevl 14:06576ab99415 49 report->distance(::distance);
sillevl 14:06576ab99415 50 report->direction(direction);
sillevl 14:06576ab99415 51 report->rotation(rotation);
sillevl 14:06576ab99415 52 report->acceleration(acceleration);
sillevl 14:06576ab99415 53 //t.stop();pc.printf("*** Report time: %d us\r\n", t.read_us());
sillevl 14:06576ab99415 54 }
sillevl 14:06576ab99415 55
sillevl 14:06576ab99415 56 void receive_task(void const *name)
sillevl 14:06576ab99415 57 {
sillevl 14:06576ab99415 58
sillevl 14:06576ab99415 59 }
sillevl 14:06576ab99415 60
sillevl 14:06576ab99415 61 void idle_task(void const *name)
sillevl 14:06576ab99415 62 {
sillevl 14:06576ab99415 63
sillevl 6:414e1fea64f3 64 }
sillevl 0:ab0ce9ab81bf 65
sillevl 1:6f620263c9f8 66 int main()
sillevl 6:414e1fea64f3 67 {
sillevl 1:6f620263c9f8 68 pc.baud(115200);
sillevl 14:06576ab99415 69
sillevl 14:06576ab99415 70 RtosTimer read_sensors_timer(read_sensors_task, osTimerPeriodic);
sillevl 14:06576ab99415 71 read_sensors_timer.start(50);
sillevl 14:06576ab99415 72
sillevl 14:06576ab99415 73 RtosTimer report_timer(report_task, osTimerPeriodic);
sillevl 17:b73fcdb828f3 74 // report_timer.start(500);
sillevl 14:06576ab99415 75
sillevl 17:b73fcdb828f3 76 // Thread receive_thread(receive_task);
sillevl 17:b73fcdb828f3 77 // Thread idle_thread(idle_task, NULL, osPriorityLow);
sillevl 14:06576ab99415 78
sillevl 14:06576ab99415 79 Thread::wait(osWaitForever);
sillevl 0:ab0ce9ab81bf 80 }