Starting point for the student buggy project
Fork of microbit-hello-world by
main.cpp@4:2d939ef2b09c, 2017-08-06 (annotated)
- Committer:
- OyaideA
- Date:
- Sun Aug 06 20:13:33 2017 +0000
- Revision:
- 4:2d939ef2b09c
- Parent:
- 3:c3a42966b47c
- Child:
- 5:a33f016d5962
Now includes motor characterisation code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
LancasterUniversity | 0:0041f35b0c4c | 1 | /* |
LancasterUniversity | 0:0041f35b0c4c | 2 | The MIT License (MIT) |
LancasterUniversity | 0:0041f35b0c4c | 3 | |
LancasterUniversity | 0:0041f35b0c4c | 4 | Copyright (c) 2016 British Broadcasting Corporation. |
LancasterUniversity | 0:0041f35b0c4c | 5 | This software is provided by Lancaster University by arrangement with the BBC. |
LancasterUniversity | 0:0041f35b0c4c | 6 | |
LancasterUniversity | 0:0041f35b0c4c | 7 | Permission is hereby granted, free of charge, to any person obtaining a |
LancasterUniversity | 0:0041f35b0c4c | 8 | copy of this software and associated documentation files (the "Software"), |
LancasterUniversity | 0:0041f35b0c4c | 9 | to deal in the Software without restriction, including without limitation |
LancasterUniversity | 0:0041f35b0c4c | 10 | the rights to use, copy, modify, merge, publish, distribute, sublicense, |
LancasterUniversity | 0:0041f35b0c4c | 11 | and/or sell copies of the Software, and to permit persons to whom the |
LancasterUniversity | 0:0041f35b0c4c | 12 | Software is furnished to do so, subject to the following conditions: |
LancasterUniversity | 0:0041f35b0c4c | 13 | |
LancasterUniversity | 0:0041f35b0c4c | 14 | The above copyright notice and this permission notice shall be included in |
LancasterUniversity | 0:0041f35b0c4c | 15 | all copies or substantial portions of the Software. |
LancasterUniversity | 0:0041f35b0c4c | 16 | |
LancasterUniversity | 0:0041f35b0c4c | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
LancasterUniversity | 0:0041f35b0c4c | 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
LancasterUniversity | 0:0041f35b0c4c | 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
LancasterUniversity | 0:0041f35b0c4c | 20 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
LancasterUniversity | 0:0041f35b0c4c | 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
LancasterUniversity | 0:0041f35b0c4c | 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
LancasterUniversity | 0:0041f35b0c4c | 23 | DEALINGS IN THE SOFTWARE. |
LancasterUniversity | 0:0041f35b0c4c | 24 | */ |
LancasterUniversity | 0:0041f35b0c4c | 25 | |
OyaideA | 2:47b7a55b0805 | 26 | #include "Buggy.h" |
LancasterUniversity | 0:0041f35b0c4c | 27 | |
OyaideA | 1:8c05eb53f714 | 28 | |
OyaideA | 1:8c05eb53f714 | 29 | int main(); |
OyaideA | 2:47b7a55b0805 | 30 | void SelfTest(); |
OyaideA | 2:47b7a55b0805 | 31 | void DisplaySonarTiming(); |
LancasterUniversity | 0:0041f35b0c4c | 32 | |
LancasterUniversity | 0:0041f35b0c4c | 33 | int main() |
OyaideA | 2:47b7a55b0805 | 34 | { |
OyaideA | 1:8c05eb53f714 | 35 | //Initialise the micro:bit runtime. |
OyaideA | 2:47b7a55b0805 | 36 | InitialiseBuggy(); |
OyaideA | 1:8c05eb53f714 | 37 | |
OyaideA | 2:47b7a55b0805 | 38 | //Run self test forever |
OyaideA | 2:47b7a55b0805 | 39 | //SelfTest(); |
OyaideA | 2:47b7a55b0805 | 40 | //Print the sonar time |
OyaideA | 3:c3a42966b47c | 41 | //DisplaySonarTiming(); |
OyaideA | 4:2d939ef2b09c | 42 | MotorSpeedCharacterisation(); |
OyaideA | 3:c3a42966b47c | 43 | |
OyaideA | 2:47b7a55b0805 | 44 | |
LancasterUniversity | 0:0041f35b0c4c | 45 | |
LancasterUniversity | 0:0041f35b0c4c | 46 | // If main exits, there may still be other fibers running or registered event handlers etc. |
LancasterUniversity | 0:0041f35b0c4c | 47 | // Simply release this fiber, which will mean we enter the scheduler. Worse case, we then |
LancasterUniversity | 0:0041f35b0c4c | 48 | // sit in the idle task forever, in a power efficient sleep. |
LancasterUniversity | 0:0041f35b0c4c | 49 | release_fiber(); |
LancasterUniversity | 0:0041f35b0c4c | 50 | } |
LancasterUniversity | 0:0041f35b0c4c | 51 | |
OyaideA | 2:47b7a55b0805 | 52 | void SelfTest() |
OyaideA | 2:47b7a55b0805 | 53 | { |
OyaideA | 2:47b7a55b0805 | 54 | int Counter = 3; |
OyaideA | 2:47b7a55b0805 | 55 | unsigned int LastSystemTime = 0; |
OyaideA | 2:47b7a55b0805 | 56 | |
OyaideA | 2:47b7a55b0805 | 57 | //Display start message using the LEDs |
OyaideA | 2:47b7a55b0805 | 58 | //uBit.display.scroll("Hello World"); |
OyaideA | 2:47b7a55b0805 | 59 | //Instead, display 3, 2, 1, 0 |
OyaideA | 2:47b7a55b0805 | 60 | uBit.display.printAsync(Counter); |
OyaideA | 2:47b7a55b0805 | 61 | LastSystemTime = uBit.systemTime(); |
OyaideA | 2:47b7a55b0805 | 62 | while (Counter > 0) |
OyaideA | 2:47b7a55b0805 | 63 | { |
OyaideA | 2:47b7a55b0805 | 64 | if( (uBit.systemTime()-LastSystemTime) > 1000) |
OyaideA | 2:47b7a55b0805 | 65 | { |
OyaideA | 2:47b7a55b0805 | 66 | //uBit.serial.printf("Counter=%d, ", Counter); |
OyaideA | 2:47b7a55b0805 | 67 | LastSystemTime = uBit.systemTime(); |
OyaideA | 2:47b7a55b0805 | 68 | Counter = Counter - 1; |
OyaideA | 2:47b7a55b0805 | 69 | uBit.display.printAsync(Counter); |
OyaideA | 2:47b7a55b0805 | 70 | } |
OyaideA | 2:47b7a55b0805 | 71 | } |
OyaideA | 2:47b7a55b0805 | 72 | |
OyaideA | 2:47b7a55b0805 | 73 | while(1) |
OyaideA | 2:47b7a55b0805 | 74 | { |
OyaideA | 2:47b7a55b0805 | 75 | //Run the sonar test for 10 secs |
OyaideA | 2:47b7a55b0805 | 76 | LastSystemTime = uBit.systemTime(); |
OyaideA | 2:47b7a55b0805 | 77 | while( (uBit.systemTime()-LastSystemTime) < 10000) |
OyaideA | 2:47b7a55b0805 | 78 | { |
OyaideA | 2:47b7a55b0805 | 79 | TestSonar(); |
OyaideA | 2:47b7a55b0805 | 80 | } |
OyaideA | 2:47b7a55b0805 | 81 | //Display 0 |
OyaideA | 2:47b7a55b0805 | 82 | uBit.display.printAsync(Counter); |
OyaideA | 2:47b7a55b0805 | 83 | //Run the motor test |
OyaideA | 2:47b7a55b0805 | 84 | RunBasicBuggyMotorTest(800, 1000, 1000); |
OyaideA | 2:47b7a55b0805 | 85 | } |
OyaideA | 2:47b7a55b0805 | 86 | } |
OyaideA | 2:47b7a55b0805 | 87 | |
OyaideA | 2:47b7a55b0805 | 88 | void DisplaySonarTiming() |
OyaideA | 2:47b7a55b0805 | 89 | { |
OyaideA | 2:47b7a55b0805 | 90 | while(1) |
OyaideA | 2:47b7a55b0805 | 91 | { |
OyaideA | 2:47b7a55b0805 | 92 | PrintSonarTiming(); |
OyaideA | 2:47b7a55b0805 | 93 | } |
OyaideA | 2:47b7a55b0805 | 94 | |
OyaideA | 2:47b7a55b0805 | 95 | } |