TP1
Dependencies: mbed
main.cpp@10:4276eb0b8d4c, 2020-12-09 (annotated)
- Committer:
- AntoineDeb
- Date:
- Wed Dec 09 11:31:07 2020 +0000
- Revision:
- 10:4276eb0b8d4c
- Parent:
- 9:48e3f6385bff
end;
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 | 10:4276eb0b8d4c | 4 | |
AntoineDeb | 10:4276eb0b8d4c | 5 | #define DO 16.3 |
AntoineDeb | 10:4276eb0b8d4c | 6 | #define DOd 17.3 |
AntoineDeb | 10:4276eb0b8d4c | 7 | #define RE 18.3 |
AntoineDeb | 10:4276eb0b8d4c | 8 | #define REd 19.4 |
AntoineDeb | 10:4276eb0b8d4c | 9 | #define MI 20.5 |
AntoineDeb | 10:4276eb0b8d4c | 10 | #define FA 21.8 |
AntoineDeb | 10:4276eb0b8d4c | 11 | #define FAd 23.1 |
AntoineDeb | 10:4276eb0b8d4c | 12 | #define SOL 24.5 |
AntoineDeb | 10:4276eb0b8d4c | 13 | #define SOLd 26.0 |
AntoineDeb | 10:4276eb0b8d4c | 14 | #define LA 27.5 |
AntoineDeb | 10:4276eb0b8d4c | 15 | #define LAd 29.1 |
AntoineDeb | 10:4276eb0b8d4c | 16 | #define SI 30.8 |
AntoineDeb | 10:4276eb0b8d4c | 17 | |
AntoineDeb | 10:4276eb0b8d4c | 18 | const char go[] PROGMEM = "L16 cdegreg4"; |
AntoineDeb | 10:4276eb0b8d4c | 19 | |
AntoineDeb | 10:4276eb0b8d4c | 20 | |
AntoineDeb | 8:51527660b735 | 21 | DigitalOut led1(LED1); |
AntoineDeb | 8:51527660b735 | 22 | DigitalOut led2(LED2); |
AntoineDeb | 10:4276eb0b8d4c | 23 | PwmOut speaker(p26); |
AntoineDeb | 8:51527660b735 | 24 | m3pi m3pi; |
AntoineDeb | 10:4276eb0b8d4c | 25 | float notes[12]= {DO, DOd, RE, REd, MI, FA, FAd, SOL, SOLd, LA, LAd, SI}; |
AntoineDeb | 8:51527660b735 | 26 | |
AntoineDeb | 8:51527660b735 | 27 | Serial pc(USBTX,USBRX); |
Maximousse | 1:b4a0be3cdce6 | 28 | |
AntoineDeb | 9:48e3f6385bff | 29 | LocalFileSystem local("local"); |
AntoineDeb | 9:48e3f6385bff | 30 | |
AntoineDeb | 9:48e3f6385bff | 31 | |
AntoineDeb | 9:48e3f6385bff | 32 | void readBattery() |
AntoineDeb | 9:48e3f6385bff | 33 | { |
AntoineDeb | 9:48e3f6385bff | 34 | char s[500]; |
AntoineDeb | 9:48e3f6385bff | 35 | char* s2 = "Battery:%f V\n"; |
AntoineDeb | 9:48e3f6385bff | 36 | sprintf(s, s2, m3pi.battery()); |
AntoineDeb | 9:48e3f6385bff | 37 | for (int i=0; i<strlen(s); i++) { |
AntoineDeb | 9:48e3f6385bff | 38 | pc.putc(s[i]); |
AntoineDeb | 9:48e3f6385bff | 39 | } |
AntoineDeb | 9:48e3f6385bff | 40 | pc.printf("\r"); |
AntoineDeb | 9:48e3f6385bff | 41 | } |
AntoineDeb | 9:48e3f6385bff | 42 | |
AntoineDeb | 9:48e3f6385bff | 43 | void readSensors() |
AntoineDeb | 9:48e3f6385bff | 44 | { |
AntoineDeb | 9:48e3f6385bff | 45 | char s[500]; |
AntoineDeb | 9:48e3f6385bff | 46 | char* s2 = "Sensors:(%u,%u,%u,%u,%u) \n"; |
AntoineDeb | 9:48e3f6385bff | 47 | unsigned short val[5]; |
AntoineDeb | 9:48e3f6385bff | 48 | m3pi.calibrated_sensors(val); |
AntoineDeb | 9:48e3f6385bff | 49 | sprintf(s, s2, val[0],val[1],val[2],val[3],val[4]); |
AntoineDeb | 9:48e3f6385bff | 50 | for (int i=0; i<strlen(s); i++) { |
AntoineDeb | 9:48e3f6385bff | 51 | pc.putc(s[i]); |
AntoineDeb | 9:48e3f6385bff | 52 | } |
AntoineDeb | 9:48e3f6385bff | 53 | pc.printf("\r"); |
AntoineDeb | 9:48e3f6385bff | 54 | } |
AntoineDeb | 9:48e3f6385bff | 55 | |
Maximousse | 0:89e0c9ac4a1a | 56 | |
AntoineDeb | 8:51527660b735 | 57 | //__enable_irq(); |
AntoineDeb | 8:51527660b735 | 58 | unsigned short flag = 0; |
AntoineDeb | 8:51527660b735 | 59 | int word; |
AntoineDeb | 8:51527660b735 | 60 | //InterruptIn USBINTERRUPT(USBRX); |
AntoineDeb | 7:a1c1cb3a5d42 | 61 | |
AntoineDeb | 8:51527660b735 | 62 | void GetKeyboard() |
AntoineDeb | 8:51527660b735 | 63 | { |
AntoineDeb | 8:51527660b735 | 64 | //pc.printf("Keyboard Interrupt \n"); |
AntoineDeb | 8:51527660b735 | 65 | flag = 1; |
AntoineDeb | 8:51527660b735 | 66 | if(pc.readable()) |
AntoineDeb | 8:51527660b735 | 67 | word = pc.getc(); |
AntoineDeb | 8:51527660b735 | 68 | else pc.printf("no readable\n"); |
AntoineDeb | 8:51527660b735 | 69 | return; |
AntoineDeb | 8:51527660b735 | 70 | } |
AntoineDeb | 9:48e3f6385bff | 71 | void writetofile() |
AntoineDeb | 9:48e3f6385bff | 72 | { |
AntoineDeb | 9:48e3f6385bff | 73 | FILE *fp = fopen("/local/out.txt", "w"); // Open "out.txt" on the local file system for writing |
AntoineDeb | 9:48e3f6385bff | 74 | while(word!='x') |
AntoineDeb | 9:48e3f6385bff | 75 | { |
AntoineDeb | 9:48e3f6385bff | 76 | switch(word) |
AntoineDeb | 9:48e3f6385bff | 77 | { |
AntoineDeb | 9:48e3f6385bff | 78 | case 'z': fprintf(fp,"zz\n");break; |
AntoineDeb | 9:48e3f6385bff | 79 | case 'q': fprintf(fp,"qq\n");break; |
AntoineDeb | 9:48e3f6385bff | 80 | case 's': fprintf(fp,"ss\n");break; |
AntoineDeb | 9:48e3f6385bff | 81 | case 'd': fprintf(fp,"dd\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 82 | case '0': fprintf(fp,"00\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 83 | case '1': fprintf(fp,"11\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 84 | case '2': fprintf(fp,"22\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 85 | case '3': fprintf(fp,"33\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 86 | case '4': fprintf(fp,"44\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 87 | case '5': fprintf(fp,"55\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 88 | case '6': fprintf(fp,"66\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 89 | case '7': fprintf(fp,"77\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 90 | case '8': fprintf(fp,"88\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 91 | case '9': fprintf(fp,"99\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 92 | case '-': fprintf(fp,"--\n");break; |
AntoineDeb | 10:4276eb0b8d4c | 93 | case '+': fprintf(fp,"++\n");break; |
AntoineDeb | 9:48e3f6385bff | 94 | |
AntoineDeb | 9:48e3f6385bff | 95 | } |
AntoineDeb | 9:48e3f6385bff | 96 | wait(0.5); |
AntoineDeb | 9:48e3f6385bff | 97 | |
AntoineDeb | 9:48e3f6385bff | 98 | |
AntoineDeb | 9:48e3f6385bff | 99 | } |
AntoineDeb | 9:48e3f6385bff | 100 | fclose(fp); |
AntoineDeb | 9:48e3f6385bff | 101 | } |
AntoineDeb | 9:48e3f6385bff | 102 | |
AntoineDeb | 10:4276eb0b8d4c | 103 | void PlayNote (float frequency, float volume) |
AntoineDeb | 10:4276eb0b8d4c | 104 | { |
AntoineDeb | 10:4276eb0b8d4c | 105 | speaker.period(1./frequency); |
AntoineDeb | 10:4276eb0b8d4c | 106 | speaker=volume; |
AntoineDeb | 10:4276eb0b8d4c | 107 | } |
AntoineDeb | 10:4276eb0b8d4c | 108 | |
AntoineDeb | 9:48e3f6385bff | 109 | void openfile() |
AntoineDeb | 9:48e3f6385bff | 110 | { |
AntoineDeb | 9:48e3f6385bff | 111 | char chaine[2]; |
AntoineDeb | 10:4276eb0b8d4c | 112 | int octave =2;float volume=0.3; |
AntoineDeb | 9:48e3f6385bff | 113 | FILE *fp = fopen("/local/out.txt", "r"); |
AntoineDeb | 9:48e3f6385bff | 114 | if (fp!=NULL) |
AntoineDeb | 9:48e3f6385bff | 115 | { |
AntoineDeb | 9:48e3f6385bff | 116 | while (!feof(fp)) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL) |
AntoineDeb | 9:48e3f6385bff | 117 | { |
AntoineDeb | 9:48e3f6385bff | 118 | fgets(chaine,2,fp); |
AntoineDeb | 9:48e3f6385bff | 119 | switch (chaine[0]) |
AntoineDeb | 9:48e3f6385bff | 120 | { |
AntoineDeb | 9:48e3f6385bff | 121 | case 'z': |
AntoineDeb | 9:48e3f6385bff | 122 | m3pi.forward(0.5); |
AntoineDeb | 9:48e3f6385bff | 123 | wait(0.5); |
AntoineDeb | 9:48e3f6385bff | 124 | m3pi.stop(); |
AntoineDeb | 9:48e3f6385bff | 125 | break; |
AntoineDeb | 9:48e3f6385bff | 126 | case 's': |
AntoineDeb | 9:48e3f6385bff | 127 | m3pi.backward(0.5); |
AntoineDeb | 9:48e3f6385bff | 128 | wait(0.5); |
AntoineDeb | 9:48e3f6385bff | 129 | m3pi.stop(); |
AntoineDeb | 9:48e3f6385bff | 130 | break; |
AntoineDeb | 9:48e3f6385bff | 131 | case 'q': |
AntoineDeb | 9:48e3f6385bff | 132 | m3pi.left(0.5); |
AntoineDeb | 9:48e3f6385bff | 133 | wait(0.5); |
AntoineDeb | 9:48e3f6385bff | 134 | m3pi.stop(); |
AntoineDeb | 9:48e3f6385bff | 135 | break; |
AntoineDeb | 9:48e3f6385bff | 136 | case 'd': |
AntoineDeb | 9:48e3f6385bff | 137 | m3pi.right(0.5); |
AntoineDeb | 9:48e3f6385bff | 138 | wait(0.5); |
AntoineDeb | 9:48e3f6385bff | 139 | m3pi.stop(); |
AntoineDeb | 10:4276eb0b8d4c | 140 | break; |
AntoineDeb | 10:4276eb0b8d4c | 141 | case '0': PlayNote(notes[0]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 142 | case '1': PlayNote(notes[1]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 143 | case '2': PlayNote(notes[2]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 144 | case '3': PlayNote(notes[3]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 145 | case '4': PlayNote(notes[4]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 146 | case '5': PlayNote(notes[5]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 147 | case '6': PlayNote(notes[6]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 148 | case '7': PlayNote(notes[7]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 149 | case '8': PlayNote(notes[8]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 150 | case '9': PlayNote(notes[9]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 151 | case '-': PlayNote(notes[10]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 152 | case '+': PlayNote(notes[11]*pow(2.,octave),volume);break; |
AntoineDeb | 10:4276eb0b8d4c | 153 | |
AntoineDeb | 9:48e3f6385bff | 154 | } |
AntoineDeb | 9:48e3f6385bff | 155 | } |
AntoineDeb | 9:48e3f6385bff | 156 | } |
AntoineDeb | 9:48e3f6385bff | 157 | fclose(fp); |
AntoineDeb | 9:48e3f6385bff | 158 | } |
AntoineDeb | 9:48e3f6385bff | 159 | |
AntoineDeb | 9:48e3f6385bff | 160 | |
Maximousse | 1:b4a0be3cdce6 | 161 | |
AntoineDeb | 8:51527660b735 | 162 | int main() |
AntoineDeb | 8:51527660b735 | 163 | { |
AntoineDeb | 8:51527660b735 | 164 | m3pi.cls(); |
AntoineDeb | 8:51527660b735 | 165 | pc.printf("Bonjour \n"); |
AntoineDeb | 8:51527660b735 | 166 | //USBINTERRUPT.rise(&GetKeyboard);z |
AntoineDeb | 8:51527660b735 | 167 | pc.attach(&GetKeyboard, Serial::RxIrq); |
AntoineDeb | 10:4276eb0b8d4c | 168 | play_from_program_space(go); |
AntoineDeb | 10:4276eb0b8d4c | 169 | while(is_playing()); |
AntoineDeb | 10:4276eb0b8d4c | 170 | |
AntoineDeb | 9:48e3f6385bff | 171 | //flag=0; |
AntoineDeb | 8:51527660b735 | 172 | while(1) |
AntoineDeb | 8:51527660b735 | 173 | { |
AntoineDeb | 9:48e3f6385bff | 174 | |
AntoineDeb | 8:51527660b735 | 175 | if(flag == 1) |
AntoineDeb | 8:51527660b735 | 176 | { |
AntoineDeb | 8:51527660b735 | 177 | pc.printf("in flag\n"); |
AntoineDeb | 8:51527660b735 | 178 | //word = pc.getc(); |
AntoineDeb | 8:51527660b735 | 179 | pc.printf("word = %c", word); |
AntoineDeb | 8:51527660b735 | 180 | switch(word) |
AntoineDeb | 8:51527660b735 | 181 | { |
AntoineDeb | 9:48e3f6385bff | 182 | case 'z': |
AntoineDeb | 9:48e3f6385bff | 183 | m3pi.forward(0.5); |
AntoineDeb | 9:48e3f6385bff | 184 | wait(0.5); |
AntoineDeb | 9:48e3f6385bff | 185 | m3pi.stop(); |
AntoineDeb | 9:48e3f6385bff | 186 | break; |
AntoineDeb | 9:48e3f6385bff | 187 | case 'q': |
AntoineDeb | 9:48e3f6385bff | 188 | m3pi.left(0.5); |
AntoineDeb | 9:48e3f6385bff | 189 | wait(0.5); |
AntoineDeb | 9:48e3f6385bff | 190 | m3pi.stop(); |
AntoineDeb | 9:48e3f6385bff | 191 | break; |
AntoineDeb | 9:48e3f6385bff | 192 | case 's': |
AntoineDeb | 9:48e3f6385bff | 193 | m3pi.backward(0.5); |
AntoineDeb | 9:48e3f6385bff | 194 | wait(0.5); |
AntoineDeb | 9:48e3f6385bff | 195 | m3pi.stop(); |
AntoineDeb | 9:48e3f6385bff | 196 | break; |
AntoineDeb | 9:48e3f6385bff | 197 | case 'd': |
AntoineDeb | 9:48e3f6385bff | 198 | m3pi.right(0.5); |
AntoineDeb | 9:48e3f6385bff | 199 | wait(0.5); |
AntoineDeb | 9:48e3f6385bff | 200 | m3pi.stop(); |
AntoineDeb | 9:48e3f6385bff | 201 | break; |
AntoineDeb | 9:48e3f6385bff | 202 | case 'b': |
AntoineDeb | 9:48e3f6385bff | 203 | readBattery(); |
AntoineDeb | 9:48e3f6385bff | 204 | break; |
AntoineDeb | 9:48e3f6385bff | 205 | case 'c': |
AntoineDeb | 9:48e3f6385bff | 206 | readSensors(); |
AntoineDeb | 9:48e3f6385bff | 207 | break; |
AntoineDeb | 9:48e3f6385bff | 208 | case 'p': |
AntoineDeb | 9:48e3f6385bff | 209 | writetofile(); |
AntoineDeb | 9:48e3f6385bff | 210 | break; |
AntoineDeb | 9:48e3f6385bff | 211 | case 'r': |
AntoineDeb | 9:48e3f6385bff | 212 | openfile(); |
AntoineDeb | 8:51527660b735 | 213 | } |
AntoineDeb | 9:48e3f6385bff | 214 | flag=0; |
AntoineDeb | 8:51527660b735 | 215 | } |
AntoineDeb | 8:51527660b735 | 216 | else {} |
Maximousse | 0:89e0c9ac4a1a | 217 | } |
Maximousse | 0:89e0c9ac4a1a | 218 | } |