m3Dpi robot, based on the Pololu 3pi and m3pi. m3Dpi has multiple distance sensors, gyroscope, compass and accelerometer sensor to be fully aware of its environment. With the addition of xbee or nrf24n01 module it has wireless communication capabilities.
Dependencies: m3Dpi mbed-rtos mbed MbedJSONValue
main.cpp@1:6f620263c9f8, 2015-12-03 (annotated)
- Committer:
- sillevl
- Date:
- Thu Dec 03 07:59:45 2015 +0000
- Revision:
- 1:6f620263c9f8
- Parent:
- 0:ab0ce9ab81bf
- Child:
- 6:414e1fea64f3
initial code commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sillevl | 0:ab0ce9ab81bf | 1 | |
sillevl | 1:6f620263c9f8 | 2 | #include "M3Dpi.h" |
sillevl | 1:6f620263c9f8 | 3 | |
sillevl | 1:6f620263c9f8 | 4 | M3Dpi m3dpi; |
sillevl | 1:6f620263c9f8 | 5 | Serial pc(USBTX,USBRX); |
sillevl | 1:6f620263c9f8 | 6 | |
sillevl | 1:6f620263c9f8 | 7 | int colors[8] = {Color::RED, Color::GREEN, Color::BLUE, Color::MAGENTA, Color::CYAN, Color::YELLOW}; |
sillevl | 1:6f620263c9f8 | 8 | int distance[8] = {0}; |
sillevl | 1:6f620263c9f8 | 9 | int direction[3] = {0}; |
sillevl | 1:6f620263c9f8 | 10 | int rotation[3] = {0}; |
sillevl | 1:6f620263c9f8 | 11 | int acceleration[3] = {0}; |
sillevl | 1:6f620263c9f8 | 12 | char timeBuffer[32] = {0}; |
sillevl | 0:ab0ce9ab81bf | 13 | |
sillevl | 1:6f620263c9f8 | 14 | int main() |
sillevl | 1:6f620263c9f8 | 15 | { |
sillevl | 1:6f620263c9f8 | 16 | pc.baud(115200); |
sillevl | 1:6f620263c9f8 | 17 | m3dpi.setStatus(Color::GREEN); |
sillevl | 1:6f620263c9f8 | 18 | |
sillevl | 1:6f620263c9f8 | 19 | pc.printf("Device ID is: 0x%02x\n", m3dpi.accelerometer.getDevId()); |
sillevl | 1:6f620263c9f8 | 20 | pc.printf("Gyro id: 0x%02x\n", m3dpi.gyro.getWhoAmI()); |
sillevl | 0:ab0ce9ab81bf | 21 | |
sillevl | 1:6f620263c9f8 | 22 | while(1) { |
sillevl | 1:6f620263c9f8 | 23 | m3dpi.getDistance(distance); |
sillevl | 1:6f620263c9f8 | 24 | pc.printf("{\"id\":\"123456789\",\"distance\":[%d,%d,%d,%d,%d,%d,%d,%d]}\n",distance[0],distance[1],distance[2],distance[3],distance[4],distance[5],distance[6],distance[7]); |
sillevl | 1:6f620263c9f8 | 25 | |
sillevl | 1:6f620263c9f8 | 26 | for(int i = 0; i < 8; i++){ |
sillevl | 1:6f620263c9f8 | 27 | colors[i] = distance[i] << 16; |
sillevl | 1:6f620263c9f8 | 28 | } |
sillevl | 1:6f620263c9f8 | 29 | m3dpi.setLeds(colors); |
sillevl | 1:6f620263c9f8 | 30 | |
sillevl | 1:6f620263c9f8 | 31 | m3dpi.getDirection(direction); |
sillevl | 1:6f620263c9f8 | 32 | pc.printf("{\"id\":\"123456789\",\"direction\":{\"x\":%d,\"y\":%d,\"z\":%d}}\n",direction[0], direction[1], direction[2]); |
sillevl | 1:6f620263c9f8 | 33 | |
sillevl | 1:6f620263c9f8 | 34 | m3dpi.getRotation(rotation); |
sillevl | 1:6f620263c9f8 | 35 | pc.printf("{\"id\":\"123456789\",\"rotation\":{\"x\":%d,\"y\":%d,\"z\":%d}}\n",rotation[0], rotation[1], rotation[2]); |
sillevl | 1:6f620263c9f8 | 36 | |
sillevl | 1:6f620263c9f8 | 37 | m3dpi.getAcceleration(acceleration); |
sillevl | 1:6f620263c9f8 | 38 | pc.printf("{\"id\":\"123456789\",\"acceleration\":{\"x\":%d,\"y\":%d,\"z\":%d}}\n",acceleration[0], acceleration[1], acceleration[2]); |
sillevl | 1:6f620263c9f8 | 39 | |
sillevl | 1:6f620263c9f8 | 40 | m3dpi.getTime(timeBuffer); |
sillevl | 1:6f620263c9f8 | 41 | pc.printf("{\"time\":\"%s\"}", timeBuffer); |
sillevl | 1:6f620263c9f8 | 42 | |
sillevl | 1:6f620263c9f8 | 43 | wait(0.5); |
sillevl | 1:6f620263c9f8 | 44 | } |
sillevl | 0:ab0ce9ab81bf | 45 | } |