PRJ1401_LIDAR / Mbed 2 deprecated Nucleo_Une_Mesure

Dependencies:   PwmIn mbed

Revision:
3:e750507bf900
Parent:
2:656a20620e62
Child:
5:7e152e2fe429
--- a/main.cpp	Tue Feb 26 14:17:36 2019 +0000
+++ b/main.cpp	Tue Mar 12 16:07:01 2019 +0000
@@ -5,58 +5,63 @@
 DigitalIn mybutton(USER_BUTTON);
 DigitalOut trig(PA_10);
 Serial pc(USBTX,USBRX);
+PwmOut servo(PB_5);
 PwmIn LidarI(PB_3);
 
 float mes = 0;
 int arret = 0, n = 0, i = 0;
+float A = 1.0f;
  
 float boucleM(){
-    wait_ms(10);
-    mes = LidarI.pulsewidth() / 10;
-    if(mes!=0){
-        pc.printf("Mesure : %f\n",mes);
-    } else pc.printf("Erreur : valeur nulles.\n");
-    arret = !mybutton.read();
-    return (mes); 
+    wait_ms(40); //Laisser le moteur arriver à sa position
+    trig = 1;
+    trig=0;        // Déclenchement
+    wait_ms(10);  //Attendre que le signal du LIDAR soit clair pour le microcontroleur et pas parasité par la baisse du déclenchement
+    mes = LidarI.pulsewidth() / 10;  //Lecture du signal et enregistrement dans la variable mes
+    trig = 1;  //Stop de la prise de mesure
+    pc.printf("Mesure : %f",mes); //Affichage de la mesure prise
+    //arret = !mybutton.read(); ------------------------------>Ne sert à rien de toute facon
+    return (mes); //Renvoi de la mesure
 }
 
-
+/*Procédure de rotation 
 void rotation(float angle){
  
  
  }
+*/
  
  
 int main() {
     float aireTotale = 0, aireTriangle = 0, angle;
-
-    
+    float tabM[180];
       
     pc.printf("\nLancement du programme...\n");
-    pc.printf("Combien de mesures allez-vous prendre ?\n");
-    pc.scanf("%d",&n);
     pc.printf("%d\n\n",n);
-    float tabM[n];
     
-    angle = 360 / n; // Angle de chaque rotation du moteur 
+    angle = 1; // Angle de chaque rotation du moteur entre chaque prises de mesure
     
     trig = 1;
-    trig=0;
-    wait_us(500);
-    
+    servo.pulsewidth_us(A*1000);
     tabM[i]=boucleM();
     i++;
-    while(i<n){
+    wait(1);
+    while(A<=2.0f){
+        //Fonction rotation moteur rotation;
+        servo.pulsewidth_us(A*1000);
+        A += (1.0f/180.0f);
         tabM[i]=boucleM();
-        i++;
-        //Fonction rotation moteur rotation(float angle);
-        wait(2);
+      
         
+        //Calcul de l'aire de chaque segment et de l'aire totale
         aireTriangle = (tabM[i - 1] * tabM[i] * sin(angle) ) / 2;
         aireTotale += aireTriangle;
+        
+        i++;
     }
     i=0;
-    while(i<n){
+    servo.pulsewidth(0);
+    while(i<180){
         pc.printf("M(%d):[%f]\n",i ,tabM[i]);  
         i=i++;  
     }