TP1
Dependencies: mbed
main.cpp@9:48e3f6385bff, 2020-12-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |