My first revision of this m3pi logo program
Dependencies: mbed MSCFileSystem_Lib m3pi
main.cpp@0:8006d54f74ab, 2011-10-18 (annotated)
- Committer:
- chris
- Date:
- Tue Oct 18 12:44:19 2011 +0000
- Revision:
- 0:8006d54f74ab
chris\ simple logo interpreter
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chris | 0:8006d54f74ab | 1 | #include "mbed.h" |
chris | 0:8006d54f74ab | 2 | #include "MSCFileSystem.h" |
chris | 0:8006d54f74ab | 3 | #include "m3pi.h" |
chris | 0:8006d54f74ab | 4 | |
chris | 0:8006d54f74ab | 5 | #define MOTOR_ENABLED |
chris | 0:8006d54f74ab | 6 | #define USBFS |
chris | 0:8006d54f74ab | 7 | |
chris | 0:8006d54f74ab | 8 | m3pi m3pi; |
chris | 0:8006d54f74ab | 9 | |
chris | 0:8006d54f74ab | 10 | BusOut leds(LED1,LED2,LED3,LED4); |
chris | 0:8006d54f74ab | 11 | |
chris | 0:8006d54f74ab | 12 | DigitalIn button(p21); |
chris | 0:8006d54f74ab | 13 | |
chris | 0:8006d54f74ab | 14 | int main() { |
chris | 0:8006d54f74ab | 15 | |
chris | 0:8006d54f74ab | 16 | // pull up the digital input for the button - The |
chris | 0:8006d54f74ab | 17 | button.mode(PullUp); |
chris | 0:8006d54f74ab | 18 | |
chris | 0:8006d54f74ab | 19 | LocalFileSystem *lfs = NULL; |
chris | 0:8006d54f74ab | 20 | MSCFileSystem *mfs = NULL; |
chris | 0:8006d54f74ab | 21 | m3pi.locate(0,1); |
chris | 0:8006d54f74ab | 22 | |
chris | 0:8006d54f74ab | 23 | if (button) { |
chris | 0:8006d54f74ab | 24 | mfs = new MSCFileSystem("fs"); |
chris | 0:8006d54f74ab | 25 | m3pi.printf(" USB "); |
chris | 0:8006d54f74ab | 26 | } else { |
chris | 0:8006d54f74ab | 27 | lfs = new LocalFileSystem("fs"); |
chris | 0:8006d54f74ab | 28 | m3pi.printf(" Local "); |
chris | 0:8006d54f74ab | 29 | } |
chris | 0:8006d54f74ab | 30 | |
chris | 0:8006d54f74ab | 31 | wait (0.5); |
chris | 0:8006d54f74ab | 32 | |
chris | 0:8006d54f74ab | 33 | float speed = 0.5; |
chris | 0:8006d54f74ab | 34 | leds = 0x0; |
chris | 0:8006d54f74ab | 35 | |
chris | 0:8006d54f74ab | 36 | // Open the command.txt file |
chris | 0:8006d54f74ab | 37 | FILE *commandfile = fopen("/fs/command.txt", "r"); |
chris | 0:8006d54f74ab | 38 | |
chris | 0:8006d54f74ab | 39 | // If there is no file, sit flashing the LEDs |
chris | 0:8006d54f74ab | 40 | if (commandfile == NULL) { |
chris | 0:8006d54f74ab | 41 | m3pi.cls(); |
chris | 0:8006d54f74ab | 42 | m3pi.printf("No File"); |
chris | 0:8006d54f74ab | 43 | while (1) { |
chris | 0:8006d54f74ab | 44 | leds=0x9; |
chris | 0:8006d54f74ab | 45 | wait(0.2); |
chris | 0:8006d54f74ab | 46 | leds=0x6; |
chris | 0:8006d54f74ab | 47 | wait(0.2); |
chris | 0:8006d54f74ab | 48 | } |
chris | 0:8006d54f74ab | 49 | } |
chris | 0:8006d54f74ab | 50 | |
chris | 0:8006d54f74ab | 51 | printf("File found\n"); |
chris | 0:8006d54f74ab | 52 | |
chris | 0:8006d54f74ab | 53 | m3pi.cls(); |
chris | 0:8006d54f74ab | 54 | m3pi.printf(" File "); |
chris | 0:8006d54f74ab | 55 | m3pi.locate(0,1); |
chris | 0:8006d54f74ab | 56 | m3pi.printf(" Found "); |
chris | 0:8006d54f74ab | 57 | |
chris | 0:8006d54f74ab | 58 | wait (0.5); |
chris | 0:8006d54f74ab | 59 | |
chris | 0:8006d54f74ab | 60 | // process each of the commands in the file |
chris | 0:8006d54f74ab | 61 | while (!feof(commandfile)) { |
chris | 0:8006d54f74ab | 62 | |
chris | 0:8006d54f74ab | 63 | char command = 0; |
chris | 0:8006d54f74ab | 64 | int data = 0.0; |
chris | 0:8006d54f74ab | 65 | |
chris | 0:8006d54f74ab | 66 | // Read from the command file |
chris | 0:8006d54f74ab | 67 | fscanf(commandfile, "%c %d\n", &command, &data); |
chris | 0:8006d54f74ab | 68 | printf("%c %d\n",command,data); |
chris | 0:8006d54f74ab | 69 | |
chris | 0:8006d54f74ab | 70 | m3pi.cls(); |
chris | 0:8006d54f74ab | 71 | m3pi.printf(" %c %4d",command,data); |
chris | 0:8006d54f74ab | 72 | |
chris | 0:8006d54f74ab | 73 | // Turn forward |
chris | 0:8006d54f74ab | 74 | if ((command=='f') || (command=='F')) { |
chris | 0:8006d54f74ab | 75 | #ifdef MOTOR_ENABLED |
chris | 0:8006d54f74ab | 76 | m3pi.forward(speed); |
chris | 0:8006d54f74ab | 77 | #endif |
chris | 0:8006d54f74ab | 78 | } |
chris | 0:8006d54f74ab | 79 | |
chris | 0:8006d54f74ab | 80 | // Turn back |
chris | 0:8006d54f74ab | 81 | else if ((command=='b') || (command=='B')) { |
chris | 0:8006d54f74ab | 82 | #ifdef MOTOR_ENABLED |
chris | 0:8006d54f74ab | 83 | m3pi.backward(speed); |
chris | 0:8006d54f74ab | 84 | #endif |
chris | 0:8006d54f74ab | 85 | } |
chris | 0:8006d54f74ab | 86 | |
chris | 0:8006d54f74ab | 87 | // Turn left |
chris | 0:8006d54f74ab | 88 | else if ((command=='l') || (command=='L')) { |
chris | 0:8006d54f74ab | 89 | #ifdef MOTOR_ENABLED |
chris | 0:8006d54f74ab | 90 | m3pi.left(speed); |
chris | 0:8006d54f74ab | 91 | #endif |
chris | 0:8006d54f74ab | 92 | } |
chris | 0:8006d54f74ab | 93 | |
chris | 0:8006d54f74ab | 94 | // Turn right |
chris | 0:8006d54f74ab | 95 | else if ((command=='r') || (command=='R')) { |
chris | 0:8006d54f74ab | 96 | #ifdef MOTOR_ENABLED |
chris | 0:8006d54f74ab | 97 | m3pi.right(speed); |
chris | 0:8006d54f74ab | 98 | #endif |
chris | 0:8006d54f74ab | 99 | } |
chris | 0:8006d54f74ab | 100 | |
chris | 0:8006d54f74ab | 101 | // Set LED 8,4,2,1 |
chris | 0:8006d54f74ab | 102 | else if ((command=='d') || (command=='D')) { |
chris | 0:8006d54f74ab | 103 | leds=data; |
chris | 0:8006d54f74ab | 104 | } |
chris | 0:8006d54f74ab | 105 | |
chris | 0:8006d54f74ab | 106 | // Set Speed 0-100 |
chris | 0:8006d54f74ab | 107 | else if ((command=='s') || (command=='S')) { |
chris | 0:8006d54f74ab | 108 | if ((data > 0) && (data <= 100)) { |
chris | 0:8006d54f74ab | 109 | float foo = data/100.0; |
chris | 0:8006d54f74ab | 110 | speed = foo; |
chris | 0:8006d54f74ab | 111 | printf("speed = %f\n", foo); |
chris | 0:8006d54f74ab | 112 | } |
chris | 0:8006d54f74ab | 113 | } |
chris | 0:8006d54f74ab | 114 | |
chris | 0:8006d54f74ab | 115 | // Wait commands |
chris | 0:8006d54f74ab | 116 | else if ((command=='w') || (command=='W')) { |
chris | 0:8006d54f74ab | 117 | } |
chris | 0:8006d54f74ab | 118 | |
chris | 0:8006d54f74ab | 119 | // wait for the length of the command |
chris | 0:8006d54f74ab | 120 | wait(data/1000.0); |
chris | 0:8006d54f74ab | 121 | m3pi.stop(); |
chris | 0:8006d54f74ab | 122 | |
chris | 0:8006d54f74ab | 123 | } // this is the end of the file while loop |
chris | 0:8006d54f74ab | 124 | |
chris | 0:8006d54f74ab | 125 | fclose(commandfile); |
chris | 0:8006d54f74ab | 126 | |
chris | 0:8006d54f74ab | 127 | m3pi.stop(); |
chris | 0:8006d54f74ab | 128 | m3pi.cls(); |
chris | 0:8006d54f74ab | 129 | m3pi.printf(" Done "); |
chris | 0:8006d54f74ab | 130 | |
chris | 0:8006d54f74ab | 131 | printf("Done\n"); |
chris | 0:8006d54f74ab | 132 | |
chris | 0:8006d54f74ab | 133 | while (1) { |
chris | 0:8006d54f74ab | 134 | leds=0; |
chris | 0:8006d54f74ab | 135 | wait(0.5); |
chris | 0:8006d54f74ab | 136 | leds=0xf; |
chris | 0:8006d54f74ab | 137 | wait(0.5); |
chris | 0:8006d54f74ab | 138 | } |
chris | 0:8006d54f74ab | 139 | |
chris | 0:8006d54f74ab | 140 | } // end of main |