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: mbed mbed-rtos Motor LSM9DS1_Library_cal X_NUCLEO_53L0A1
main.cpp@19:41d0cc14edc5, 2019-04-25 (annotated)
- Committer:
- abh15
- Date:
- Thu Apr 25 18:53:13 2019 +0000
- Revision:
- 19:41d0cc14edc5
- Parent:
- 18:7ed985584ec7
- Child:
- 20:d9a373fecd42
Fixed bugs in RobotController
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
abh15 | 6:c119cc5d48d6 | 1 | #include "globals.h" |
rpatelpj | 3:1dce1ba5b8bd | 2 | #include "DataDistributor.h" |
rpatelpj | 3:1dce1ba5b8bd | 3 | #include "RobotController.h" |
rpatelpj | 17:e1a5d25218de | 4 | #include "XNucleo53L0A1.h" |
rpatelpj | 0:66b7ea9af0dc | 5 | |
abh15 | 6:c119cc5d48d6 | 6 | Serial pc(USBTX, USBRX); |
rpatelpj | 8:bfa4bf23522c | 7 | BusOut led(LED1, LED2, LED3, LED4); |
rpatelpj | 8:bfa4bf23522c | 8 | DigitalIn pb(p23); |
rpatelpj | 17:e1a5d25218de | 9 | Thread lidarThread; |
rpatelpj | 8:bfa4bf23522c | 10 | |
abh15 | 9:552805fac195 | 11 | int* obstacles = new int[360]; |
rpatelpj | 8:bfa4bf23522c | 12 | int trajectoryLength = 0; |
abh15 | 9:552805fac195 | 13 | int* trajectory = new int[0]; |
rpatelpj | 18:7ed985584ec7 | 14 | uint32_t lidarDistance = 0; |
rpatelpj | 17:e1a5d25218de | 15 | bool useImu = false; |
rpatelpj | 17:e1a5d25218de | 16 | |
rpatelpj | 17:e1a5d25218de | 17 | void getLidarDistance() { |
rpatelpj | 17:e1a5d25218de | 18 | DevI2C* lidarDevice = new DevI2C(p28, p27); |
rpatelpj | 17:e1a5d25218de | 19 | XNucleo53L0A1* lidarBoard = XNucleo53L0A1::instance(lidarDevice, A2, D8, D2); |
rpatelpj | 17:e1a5d25218de | 20 | DigitalOut _lidarShdn(p26); |
rpatelpj | 17:e1a5d25218de | 21 | _lidarShdn = 0; |
abh15 | 19:41d0cc14edc5 | 22 | Thread::wait(100); |
rpatelpj | 17:e1a5d25218de | 23 | _lidarShdn = 1; |
abh15 | 19:41d0cc14edc5 | 24 | Thread::wait(100); |
rpatelpj | 17:e1a5d25218de | 25 | int status = lidarBoard->init_board(); |
rpatelpj | 17:e1a5d25218de | 26 | while (status) { |
rpatelpj | 17:e1a5d25218de | 27 | status = lidarBoard->init_board(); |
rpatelpj | 17:e1a5d25218de | 28 | } |
rpatelpj | 17:e1a5d25218de | 29 | while(1) { |
rpatelpj | 17:e1a5d25218de | 30 | if (!useImu) { |
rpatelpj | 17:e1a5d25218de | 31 | lidarBoard->sensor_centre->get_distance(&lidarDistance); |
rpatelpj | 17:e1a5d25218de | 32 | } |
rpatelpj | 17:e1a5d25218de | 33 | } |
rpatelpj | 17:e1a5d25218de | 34 | } |
rpatelpj | 0:66b7ea9af0dc | 35 | |
rpatelpj | 0:66b7ea9af0dc | 36 | int main() { |
rpatelpj | 8:bfa4bf23522c | 37 | delete []trajectory; |
rpatelpj | 5:77c6821ae418 | 38 | DataDistributor dataDistributor; |
rpatelpj | 17:e1a5d25218de | 39 | RobotController robotController(p21, p15, p16, p22, p18, p19, p13, p14, p28, p27); |
rpatelpj | 17:e1a5d25218de | 40 | lidarThread.start(getLidarDistance); |
rpatelpj | 3:1dce1ba5b8bd | 41 | |
abh15 | 10:8f4183d640d8 | 42 | while(1) { |
abh15 | 10:8f4183d640d8 | 43 | robotController.detectObstacles(); |
abh15 | 10:8f4183d640d8 | 44 | dataDistributor.transmitObstacles(); |
rpatelpj | 8:bfa4bf23522c | 45 | dataDistributor.receiveTrajectory(); |
abh15 | 10:8f4183d640d8 | 46 | robotController.followTrajectory(); |
abh15 | 10:8f4183d640d8 | 47 | } |
rpatelpj | 0:66b7ea9af0dc | 48 | } |