TP1

Dependencies:   mbed

Committer:
AntoineDeb
Date:
Wed Dec 09 11:31:07 2020 +0000
Revision:
10:4276eb0b8d4c
Parent:
9:48e3f6385bff
end;

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 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 }