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
main.cpp@11:c47a34f047d5, 2018-04-22 (annotated)
- Committer:
- KDrainEE
- Date:
- Sun Apr 22 18:05:58 2018 +0000
- Revision:
- 11:c47a34f047d5
- Parent:
- 6:1b4a677c468c
- Child:
- 12:3b83eb9a98bc
split code up
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| KDrainEE | 0:30871514c229 | 1 | #include "mbed.h" |
| KDrainEE | 0:30871514c229 | 2 | #include <iostream> |
| KDrainEE | 11:c47a34f047d5 | 3 | #include "globals.h" |
| ELCT302Honors | 6:1b4a677c468c | 4 | #include "lsc.h" |
| KDrainEE | 11:c47a34f047d5 | 5 | #include "stateMachine.h" |
| KDrainEE | 11:c47a34f047d5 | 6 | #include "control.h" |
| KDrainEE | 0:30871514c229 | 7 | |
| ELCT302Honors | 6:1b4a677c468c | 8 | /***********************************|Pin Declarations|*************************************************************/ |
| ELCT302Honors | 6:1b4a677c468c | 9 | //Communication |
| ELCT302Honors | 6:1b4a677c468c | 10 | Serial bt(PTE22, PTE23); //Serial Pins (Tx, Rx) |
| ELCT302Honors | 6:1b4a677c468c | 11 | //LEDs |
| ELCT302Honors | 6:1b4a677c468c | 12 | DigitalOut blue(LED_BLUE); |
| KDrainEE | 11:c47a34f047d5 | 13 | //DigitalOut red(LED_RED); |
| KDrainEE | 11:c47a34f047d5 | 14 | //DigitalOut green(LED_GREEN); |
| ELCT302Honors | 6:1b4a677c468c | 15 | //Checkpoint Interrupts |
| ELCT302Honors | 6:1b4a677c468c | 16 | InterruptIn navRt(PTD2); |
| ELCT302Honors | 6:1b4a677c468c | 17 | InterruptIn navLft(PTD3); |
| KDrainEE | 11:c47a34f047d5 | 18 | |
| KDrainEE | 0:30871514c229 | 19 | |
| ELCT302Honors | 6:1b4a677c468c | 20 | /***********************************|Variable Declarations|*************************************************************/ |
| KDrainEE | 0:30871514c229 | 21 | |
| KDrainEE | 11:c47a34f047d5 | 22 | |
| ELCT302Honors | 3:246625f3ceee | 23 | |
| ELCT302Honors | 5:aa582398b2eb | 24 | bool lTrig = false; |
| ELCT302Honors | 5:aa582398b2eb | 25 | bool rTrig = false; |
| ELCT302Honors | 3:246625f3ceee | 26 | |
| ELCT302Honors | 3:246625f3ceee | 27 | volatile int rightCount; |
| ELCT302Honors | 3:246625f3ceee | 28 | volatile int leftCount; |
| ELCT302Honors | 6:1b4a677c468c | 29 | bool go = 0; |
| ELCT302Honors | 6:1b4a677c468c | 30 | |
| KDrainEE | 11:c47a34f047d5 | 31 | //void waitState() |
| KDrainEE | 11:c47a34f047d5 | 32 | //{ |
| KDrainEE | 11:c47a34f047d5 | 33 | // Setpoint = 0; //Makes sure the car isn't moving |
| KDrainEE | 11:c47a34f047d5 | 34 | // state = 'w'; |
| KDrainEE | 11:c47a34f047d5 | 35 | // green = red = 1; |
| KDrainEE | 11:c47a34f047d5 | 36 | // blue = 0; //blue LED indicating car is in wait state |
| KDrainEE | 11:c47a34f047d5 | 37 | //} |
| KDrainEE | 11:c47a34f047d5 | 38 | //void offTrack() |
| KDrainEE | 11:c47a34f047d5 | 39 | //{ |
| KDrainEE | 11:c47a34f047d5 | 40 | // Setpoint = 0; |
| KDrainEE | 11:c47a34f047d5 | 41 | // brake.write(1); |
| KDrainEE | 11:c47a34f047d5 | 42 | // state = 'o'; |
| KDrainEE | 11:c47a34f047d5 | 43 | // //bt.putc(state); |
| KDrainEE | 11:c47a34f047d5 | 44 | // green = blue = 1; |
| KDrainEE | 11:c47a34f047d5 | 45 | // red = 0; |
| KDrainEE | 11:c47a34f047d5 | 46 | // waitState(); |
| KDrainEE | 11:c47a34f047d5 | 47 | //} |
| KDrainEE | 11:c47a34f047d5 | 48 | // |
| KDrainEE | 11:c47a34f047d5 | 49 | //void letsGo() |
| KDrainEE | 11:c47a34f047d5 | 50 | //{ |
| KDrainEE | 11:c47a34f047d5 | 51 | // state = 'g'; |
| KDrainEE | 11:c47a34f047d5 | 52 | // //bt.putc(state); |
| KDrainEE | 11:c47a34f047d5 | 53 | // red = blue = 1; |
| KDrainEE | 11:c47a34f047d5 | 54 | // green = 0; |
| KDrainEE | 11:c47a34f047d5 | 55 | // brake.write(0); |
| KDrainEE | 11:c47a34f047d5 | 56 | // go = 1; |
| KDrainEE | 11:c47a34f047d5 | 57 | // Setpoint = spHolder; |
| KDrainEE | 11:c47a34f047d5 | 58 | //} |
| KDrainEE | 11:c47a34f047d5 | 59 | // |
| KDrainEE | 11:c47a34f047d5 | 60 | //void stopState() |
| KDrainEE | 11:c47a34f047d5 | 61 | //{ |
| KDrainEE | 11:c47a34f047d5 | 62 | // state = 's'; |
| KDrainEE | 11:c47a34f047d5 | 63 | // spHolder = Setpoint; |
| KDrainEE | 11:c47a34f047d5 | 64 | // Setpoint = 0; |
| KDrainEE | 11:c47a34f047d5 | 65 | // brake.write(1); |
| KDrainEE | 11:c47a34f047d5 | 66 | // waitState(); |
| KDrainEE | 11:c47a34f047d5 | 67 | //} |
| ELCT302Honors | 6:1b4a677c468c | 68 | |
| KDrainEE | 11:c47a34f047d5 | 69 | //void applyBrake() |
| KDrainEE | 11:c47a34f047d5 | 70 | //{ |
| KDrainEE | 11:c47a34f047d5 | 71 | // spHolder = Setpoint; |
| KDrainEE | 11:c47a34f047d5 | 72 | // brake.write(1); |
| KDrainEE | 11:c47a34f047d5 | 73 | // Setpoint = 0.0; |
| KDrainEE | 11:c47a34f047d5 | 74 | //} |
| KDrainEE | 11:c47a34f047d5 | 75 | // |
| KDrainEE | 11:c47a34f047d5 | 76 | //void releaseBrake() |
| KDrainEE | 11:c47a34f047d5 | 77 | //{ |
| KDrainEE | 11:c47a34f047d5 | 78 | // brake.write(0); |
| KDrainEE | 11:c47a34f047d5 | 79 | // Setpoint = spHolder; |
| KDrainEE | 11:c47a34f047d5 | 80 | //} |
| KDrainEE | 11:c47a34f047d5 | 81 | bool paramChanged = false; |
| ELCT302Honors | 6:1b4a677c468c | 82 | |
| KDrainEE | 0:30871514c229 | 83 | void serCb() |
| KDrainEE | 0:30871514c229 | 84 | { |
| KDrainEE | 0:30871514c229 | 85 | char x = bt.getc(); |
| KDrainEE | 0:30871514c229 | 86 | if (x == 'u') |
| KDrainEE | 0:30871514c229 | 87 | { |
| ELCT302Honors | 3:246625f3ceee | 88 | Setpoint += 0.025; |
| KDrainEE | 11:c47a34f047d5 | 89 | paramChanged = true; |
| KDrainEE | 0:30871514c229 | 90 | } |
| KDrainEE | 0:30871514c229 | 91 | else if(x == 'h') |
| KDrainEE | 0:30871514c229 | 92 | { |
| ELCT302Honors | 3:246625f3ceee | 93 | Setpoint -= 0.025; |
| KDrainEE | 11:c47a34f047d5 | 94 | paramChanged = true; |
| ELCT302Honors | 6:1b4a677c468c | 95 | } |
| KDrainEE | 0:30871514c229 | 96 | else |
| KDrainEE | 0:30871514c229 | 97 | { |
| KDrainEE | 2:e87736742f99 | 98 | bt.printf("Invalid input"); |
| KDrainEE | 0:30871514c229 | 99 | } |
| KDrainEE | 0:30871514c229 | 100 | if(Setpoint > MAXM) Setpoint = MAXM; |
| KDrainEE | 2:e87736742f99 | 101 | if(Setpoint < MINM) Setpoint = MINM; |
| KDrainEE | 0:30871514c229 | 102 | } |
| KDrainEE | 0:30871514c229 | 103 | |
| ELCT302Honors | 3:246625f3ceee | 104 | void incL() |
| ELCT302Honors | 3:246625f3ceee | 105 | { |
| ELCT302Honors | 3:246625f3ceee | 106 | leftCount++; |
| ELCT302Honors | 5:aa582398b2eb | 107 | lTrig = true; |
| ELCT302Honors | 3:246625f3ceee | 108 | } |
| KDrainEE | 2:e87736742f99 | 109 | |
| ELCT302Honors | 3:246625f3ceee | 110 | void incR() |
| KDrainEE | 0:30871514c229 | 111 | { |
| ELCT302Honors | 3:246625f3ceee | 112 | rightCount++; |
| ELCT302Honors | 5:aa582398b2eb | 113 | rTrig = true; |
| KDrainEE | 0:30871514c229 | 114 | } |
| KDrainEE | 0:30871514c229 | 115 | |
| KDrainEE | 0:30871514c229 | 116 | int main() |
| KDrainEE | 0:30871514c229 | 117 | { |
| ELCT302Honors | 3:246625f3ceee | 118 | bt.baud(115200); |
| ELCT302Honors | 6:1b4a677c468c | 119 | bt.attach(&serCb); |
| KDrainEE | 11:c47a34f047d5 | 120 | cameraInit(); |
| KDrainEE | 11:c47a34f047d5 | 121 | controlInit(); |
| KDrainEE | 0:30871514c229 | 122 | |
| ELCT302Honors | 3:246625f3ceee | 123 | rightCount = 0; |
| ELCT302Honors | 3:246625f3ceee | 124 | leftCount = 0; |
| ELCT302Honors | 5:aa582398b2eb | 125 | |
| ELCT302Honors | 3:246625f3ceee | 126 | navRt.fall(&incR); |
| ELCT302Honors | 3:246625f3ceee | 127 | navLft.fall(&incL); |
| KDrainEE | 11:c47a34f047d5 | 128 | _state = WAIT; |
| KDrainEE | 0:30871514c229 | 129 | while(1) { |
| KDrainEE | 11:c47a34f047d5 | 130 | bt.printf("%f %f\r\n", data[0], data[1]); |
| KDrainEE | 0:30871514c229 | 131 | } |
| KDrainEE | 0:30871514c229 | 132 | } |