TP1

Dependencies:   mbed

Committer:
AntoineDeb
Date:
Wed Dec 09 10:25:27 2020 +0000
Revision:
9:48e3f6385bff
Parent:
8:51527660b735
Child:
10:4276eb0b8d4c
save and read files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Maximousse 0:89e0c9ac4a1a 1 #include "mbed.h"
Maximousse 1:b4a0be3cdce6 2 #include "m3pi.h"
Maximousse 1:b4a0be3cdce6 3
AntoineDeb 8:51527660b735 4 DigitalOut led1(LED1);
AntoineDeb 8:51527660b735 5 DigitalOut led2(LED2);
AntoineDeb 8:51527660b735 6
AntoineDeb 8:51527660b735 7 m3pi m3pi;
AntoineDeb 8:51527660b735 8
AntoineDeb 8:51527660b735 9 Serial pc(USBTX,USBRX);
Maximousse 1:b4a0be3cdce6 10
AntoineDeb 9:48e3f6385bff 11 LocalFileSystem local("local");
AntoineDeb 9:48e3f6385bff 12
AntoineDeb 9:48e3f6385bff 13
AntoineDeb 9:48e3f6385bff 14 void readBattery()
AntoineDeb 9:48e3f6385bff 15 {
AntoineDeb 9:48e3f6385bff 16 char s[500];
AntoineDeb 9:48e3f6385bff 17 char* s2 = "Battery:%f V\n";
AntoineDeb 9:48e3f6385bff 18 sprintf(s, s2, m3pi.battery());
AntoineDeb 9:48e3f6385bff 19 for (int i=0; i<strlen(s); i++) {
AntoineDeb 9:48e3f6385bff 20 pc.putc(s[i]);
AntoineDeb 9:48e3f6385bff 21 }
AntoineDeb 9:48e3f6385bff 22 pc.printf("\r");
AntoineDeb 9:48e3f6385bff 23 }
AntoineDeb 9:48e3f6385bff 24
AntoineDeb 9:48e3f6385bff 25 void readSensors()
AntoineDeb 9:48e3f6385bff 26 {
AntoineDeb 9:48e3f6385bff 27 char s[500];
AntoineDeb 9:48e3f6385bff 28 char* s2 = "Sensors:(%u,%u,%u,%u,%u) \n";
AntoineDeb 9:48e3f6385bff 29 unsigned short val[5];
AntoineDeb 9:48e3f6385bff 30 m3pi.calibrated_sensors(val);
AntoineDeb 9:48e3f6385bff 31 sprintf(s, s2, val[0],val[1],val[2],val[3],val[4]);
AntoineDeb 9:48e3f6385bff 32 for (int i=0; i<strlen(s); i++) {
AntoineDeb 9:48e3f6385bff 33 pc.putc(s[i]);
AntoineDeb 9:48e3f6385bff 34 }
AntoineDeb 9:48e3f6385bff 35 pc.printf("\r");
AntoineDeb 9:48e3f6385bff 36 }
AntoineDeb 9:48e3f6385bff 37
Maximousse 0:89e0c9ac4a1a 38
AntoineDeb 8:51527660b735 39 //__enable_irq();
AntoineDeb 8:51527660b735 40 unsigned short flag = 0;
AntoineDeb 8:51527660b735 41 int word;
AntoineDeb 8:51527660b735 42 //InterruptIn USBINTERRUPT(USBRX);
AntoineDeb 7:a1c1cb3a5d42 43
AntoineDeb 8:51527660b735 44 void GetKeyboard()
AntoineDeb 8:51527660b735 45 {
AntoineDeb 8:51527660b735 46 //pc.printf("Keyboard Interrupt \n");
AntoineDeb 8:51527660b735 47 flag = 1;
AntoineDeb 8:51527660b735 48 if(pc.readable())
AntoineDeb 8:51527660b735 49 word = pc.getc();
AntoineDeb 8:51527660b735 50 else pc.printf("no readable\n");
AntoineDeb 8:51527660b735 51 return;
AntoineDeb 8:51527660b735 52 }
AntoineDeb 9:48e3f6385bff 53 void writetofile()
AntoineDeb 9:48e3f6385bff 54 {
AntoineDeb 9:48e3f6385bff 55 FILE *fp = fopen("/local/out.txt", "w"); // Open "out.txt" on the local file system for writing
AntoineDeb 9:48e3f6385bff 56 while(word!='x')
AntoineDeb 9:48e3f6385bff 57 {
AntoineDeb 9:48e3f6385bff 58 switch(word)
AntoineDeb 9:48e3f6385bff 59 {
AntoineDeb 9:48e3f6385bff 60 case 'z': fprintf(fp,"zz\n");break;
AntoineDeb 9:48e3f6385bff 61 case 'q': fprintf(fp,"qq\n");break;
AntoineDeb 9:48e3f6385bff 62 case 's': fprintf(fp,"ss\n");break;
AntoineDeb 9:48e3f6385bff 63 case 'd': fprintf(fp,"dd\n");break;
AntoineDeb 9:48e3f6385bff 64
AntoineDeb 9:48e3f6385bff 65 }
AntoineDeb 9:48e3f6385bff 66 wait(0.5);
AntoineDeb 9:48e3f6385bff 67
AntoineDeb 9:48e3f6385bff 68
AntoineDeb 9:48e3f6385bff 69 }
AntoineDeb 9:48e3f6385bff 70 fclose(fp);
AntoineDeb 9:48e3f6385bff 71 }
AntoineDeb 9:48e3f6385bff 72
AntoineDeb 9:48e3f6385bff 73 void openfile()
AntoineDeb 9:48e3f6385bff 74 {
AntoineDeb 9:48e3f6385bff 75 char chaine[2];
AntoineDeb 9:48e3f6385bff 76 FILE *fp = fopen("/local/out.txt", "r");
AntoineDeb 9:48e3f6385bff 77 if (fp!=NULL)
AntoineDeb 9:48e3f6385bff 78 {
AntoineDeb 9:48e3f6385bff 79 while (!feof(fp)) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
AntoineDeb 9:48e3f6385bff 80 {
AntoineDeb 9:48e3f6385bff 81 fgets(chaine,2,fp);
AntoineDeb 9:48e3f6385bff 82 switch (chaine[0])
AntoineDeb 9:48e3f6385bff 83 {
AntoineDeb 9:48e3f6385bff 84 case 'z':
AntoineDeb 9:48e3f6385bff 85 m3pi.forward(0.5);
AntoineDeb 9:48e3f6385bff 86 wait(0.5);
AntoineDeb 9:48e3f6385bff 87 m3pi.stop();
AntoineDeb 9:48e3f6385bff 88 break;
AntoineDeb 9:48e3f6385bff 89 case 's':
AntoineDeb 9:48e3f6385bff 90 m3pi.backward(0.5);
AntoineDeb 9:48e3f6385bff 91 wait(0.5);
AntoineDeb 9:48e3f6385bff 92 m3pi.stop();
AntoineDeb 9:48e3f6385bff 93 break;
AntoineDeb 9:48e3f6385bff 94 case 'q':
AntoineDeb 9:48e3f6385bff 95 m3pi.left(0.5);
AntoineDeb 9:48e3f6385bff 96 wait(0.5);
AntoineDeb 9:48e3f6385bff 97 m3pi.stop();
AntoineDeb 9:48e3f6385bff 98 break;
AntoineDeb 9:48e3f6385bff 99 case 'd':
AntoineDeb 9:48e3f6385bff 100 m3pi.right(0.5);
AntoineDeb 9:48e3f6385bff 101 wait(0.5);
AntoineDeb 9:48e3f6385bff 102 m3pi.stop();
AntoineDeb 9:48e3f6385bff 103 break;
AntoineDeb 9:48e3f6385bff 104 }
AntoineDeb 9:48e3f6385bff 105 }
AntoineDeb 9:48e3f6385bff 106 }
AntoineDeb 9:48e3f6385bff 107 fclose(fp);
AntoineDeb 9:48e3f6385bff 108 }
AntoineDeb 9:48e3f6385bff 109
AntoineDeb 9:48e3f6385bff 110
Maximousse 1:b4a0be3cdce6 111
AntoineDeb 8:51527660b735 112 int main()
AntoineDeb 8:51527660b735 113 {
AntoineDeb 8:51527660b735 114 m3pi.cls();
AntoineDeb 8:51527660b735 115 pc.printf("Bonjour \n");
AntoineDeb 8:51527660b735 116 //USBINTERRUPT.rise(&GetKeyboard);z
AntoineDeb 8:51527660b735 117 pc.attach(&GetKeyboard, Serial::RxIrq);
AntoineDeb 9:48e3f6385bff 118 //flag=0;
AntoineDeb 8:51527660b735 119 while(1)
AntoineDeb 8:51527660b735 120 {
AntoineDeb 9:48e3f6385bff 121
AntoineDeb 8:51527660b735 122 if(flag == 1)
AntoineDeb 8:51527660b735 123 {
AntoineDeb 8:51527660b735 124 pc.printf("in flag\n");
AntoineDeb 8:51527660b735 125 //word = pc.getc();
AntoineDeb 8:51527660b735 126 pc.printf("word = %c", word);
AntoineDeb 8:51527660b735 127 switch(word)
AntoineDeb 8:51527660b735 128 {
AntoineDeb 9:48e3f6385bff 129 case 'z':
AntoineDeb 9:48e3f6385bff 130 m3pi.forward(0.5);
AntoineDeb 9:48e3f6385bff 131 wait(0.5);
AntoineDeb 9:48e3f6385bff 132 m3pi.stop();
AntoineDeb 9:48e3f6385bff 133 break;
AntoineDeb 9:48e3f6385bff 134 case 'q':
AntoineDeb 9:48e3f6385bff 135 m3pi.left(0.5);
AntoineDeb 9:48e3f6385bff 136 wait(0.5);
AntoineDeb 9:48e3f6385bff 137 m3pi.stop();
AntoineDeb 9:48e3f6385bff 138 break;
AntoineDeb 9:48e3f6385bff 139 case 's':
AntoineDeb 9:48e3f6385bff 140 m3pi.backward(0.5);
AntoineDeb 9:48e3f6385bff 141 wait(0.5);
AntoineDeb 9:48e3f6385bff 142 m3pi.stop();
AntoineDeb 9:48e3f6385bff 143 break;
AntoineDeb 9:48e3f6385bff 144 case 'd':
AntoineDeb 9:48e3f6385bff 145 m3pi.right(0.5);
AntoineDeb 9:48e3f6385bff 146 wait(0.5);
AntoineDeb 9:48e3f6385bff 147 m3pi.stop();
AntoineDeb 9:48e3f6385bff 148 break;
AntoineDeb 9:48e3f6385bff 149 case 'b':
AntoineDeb 9:48e3f6385bff 150 readBattery();
AntoineDeb 9:48e3f6385bff 151 break;
AntoineDeb 9:48e3f6385bff 152 case 'c':
AntoineDeb 9:48e3f6385bff 153 readSensors();
AntoineDeb 9:48e3f6385bff 154 break;
AntoineDeb 9:48e3f6385bff 155 case 'p':
AntoineDeb 9:48e3f6385bff 156 writetofile();
AntoineDeb 9:48e3f6385bff 157 break;
AntoineDeb 9:48e3f6385bff 158 case 'r':
AntoineDeb 9:48e3f6385bff 159 openfile();
AntoineDeb 8:51527660b735 160 }
AntoineDeb 9:48e3f6385bff 161 flag=0;
AntoineDeb 8:51527660b735 162 }
AntoineDeb 8:51527660b735 163 else {}
Maximousse 0:89e0c9ac4a1a 164 }
Maximousse 0:89e0c9ac4a1a 165 }