TP1

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
AntoineDeb
Date:
Wed Dec 09 11:31:07 2020 +0000
Parent:
9:48e3f6385bff
Commit message:
end;

Changed in this revision

m3pi.cpp Show annotated file Show diff for this revision Revisions of this file
m3pi.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/m3pi.cpp	Wed Dec 09 10:25:27 2020 +0000
+++ b/m3pi.cpp	Wed Dec 09 11:31:07 2020 +0000
@@ -203,6 +203,18 @@
     return(_ser.getc());
 }
 
+void m3pi::play (char* music, int length) {
+    // The default 3pi serial slave program
+    // will not accept music strings longer than 100.
+    if (length > 100)
+        length = 100;
+    _ser.putc(DO_PLAY);
+    _ser.putc(length);
+    for (int i = 0 ; i < length ; i++) {
+        _ser.putc(music[i]); 
+    }
+}
+
 
 
 
--- a/m3pi.h	Wed Dec 09 10:25:27 2020 +0000
+++ b/m3pi.h	Wed Dec 09 11:31:07 2020 +0000
@@ -155,6 +155,8 @@
     /** Read the battery voltage on the 3pi
      * @returns battery voltage as a float
      */
+     
+    void play(char* music, int length);
     float battery(void);
 
     /** Read the position of the detected line
--- a/main.cpp	Wed Dec 09 10:25:27 2020 +0000
+++ b/main.cpp	Wed Dec 09 11:31:07 2020 +0000
@@ -1,10 +1,28 @@
 #include "mbed.h"
 #include "m3pi.h"
 
+
+#define DO  16.3
+#define DOd 17.3
+#define RE  18.3
+#define REd 19.4
+#define MI 20.5
+#define FA  21.8
+#define FAd 23.1
+#define SOL  24.5
+#define SOLd 26.0
+#define LA  27.5
+#define LAd 29.1
+#define SI  30.8
+
+const char go[] PROGMEM = "L16 cdegreg4";
+
+
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
-
+PwmOut speaker(p26);
 m3pi m3pi;
+float notes[12]= {DO, DOd, RE, REd, MI, FA, FAd, SOL, SOLd, LA, LAd, SI};
 
 Serial pc(USBTX,USBRX);
 
@@ -61,6 +79,18 @@
                 case 'q': fprintf(fp,"qq\n");break;
                 case 's': fprintf(fp,"ss\n");break;
                 case 'd': fprintf(fp,"dd\n");break;
+                case '0': fprintf(fp,"00\n");break;
+                case '1': fprintf(fp,"11\n");break;
+                case '2': fprintf(fp,"22\n");break;
+                case '3': fprintf(fp,"33\n");break;
+                case '4': fprintf(fp,"44\n");break;
+                case '5': fprintf(fp,"55\n");break;
+                case '6': fprintf(fp,"66\n");break;
+                case '7': fprintf(fp,"77\n");break;
+                case '8': fprintf(fp,"88\n");break;
+                case '9': fprintf(fp,"99\n");break;
+                case '-': fprintf(fp,"--\n");break;
+                case '+': fprintf(fp,"++\n");break;
                 
             }
             wait(0.5);
@@ -70,9 +100,16 @@
     fclose(fp);
     }
     
+void PlayNote (float frequency, float volume)
+{
+    speaker.period(1./frequency);
+    speaker=volume;
+}
+    
 void openfile()
 {
     char chaine[2];
+    int octave =2;float volume=0.3;
     FILE *fp = fopen("/local/out.txt", "r");
     if (fp!=NULL)
     {
@@ -100,7 +137,20 @@
                     m3pi.right(0.5);
                     wait(0.5);
                     m3pi.stop();
-                    break;                
+                    break;
+                case '0': PlayNote(notes[0]*pow(2.,octave),volume);break;
+                case '1': PlayNote(notes[1]*pow(2.,octave),volume);break;
+                case '2': PlayNote(notes[2]*pow(2.,octave),volume);break;
+                case '3': PlayNote(notes[3]*pow(2.,octave),volume);break;
+                case '4': PlayNote(notes[4]*pow(2.,octave),volume);break;
+                case '5': PlayNote(notes[5]*pow(2.,octave),volume);break;
+                case '6': PlayNote(notes[6]*pow(2.,octave),volume);break;
+                case '7': PlayNote(notes[7]*pow(2.,octave),volume);break;
+                case '8': PlayNote(notes[8]*pow(2.,octave),volume);break;
+                case '9': PlayNote(notes[9]*pow(2.,octave),volume);break;
+                case '-': PlayNote(notes[10]*pow(2.,octave),volume);break;
+                case '+': PlayNote(notes[11]*pow(2.,octave),volume);break;
+                                
                 }
         }
     }
@@ -115,6 +165,9 @@
     pc.printf("Bonjour \n");
     //USBINTERRUPT.rise(&GetKeyboard);z
     pc.attach(&GetKeyboard, Serial::RxIrq);
+    play_from_program_space(go);
+    while(is_playing());
+
     //flag=0;
     while(1)
     {