My first revision of this m3pi logo program

Dependencies:   mbed MSCFileSystem_Lib m3pi

Committer:
chris
Date:
Tue Oct 18 12:44:19 2011 +0000
Revision:
0:8006d54f74ab
chris\ simple logo interpreter

Who changed what in which revision?

UserRevisionLine numberNew 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