PRJ1401_LIDAR / Mbed 2 deprecated Nucleo_Une_Mesure

Dependencies:   PwmIn mbed

main.cpp

Committer:
Nilox
Date:
2019-03-12
Revision:
3:e750507bf900
Parent:
2:656a20620e62
Child:
5:7e152e2fe429

File content as of revision 3:e750507bf900:

#include "mbed.h"
#include <PwmIn.h>
#include <stdio.h>
 
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(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("%d\n\n",n);
    
    angle = 1; // Angle de chaque rotation du moteur entre chaque prises de mesure
    
    trig = 1;
    servo.pulsewidth_us(A*1000);
    tabM[i]=boucleM();
    i++;
    wait(1);
    while(A<=2.0f){
        //Fonction rotation moteur rotation;
        servo.pulsewidth_us(A*1000);
        A += (1.0f/180.0f);
        tabM[i]=boucleM();
      
        
        //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;
    servo.pulsewidth(0);
    while(i<180){
        pc.printf("M(%d):[%f]\n",i ,tabM[i]);  
        i=i++;  
    }
    
    pc.printf("\n Aire total : %f \n", aireTotale);
    pc.printf("Arret du programme...");
    sleep();
}
 
 
 
 
 
 
 
 /* DEUXIEME VERSION A METTRE DANS MAIN
    passe dans la tableau et calcule l'aire une fois que les mesures sont prises
    
    
 i = 1;
 while (i < n){
     
     aireTriangle = (tabM[i - 1] * tabM[i] * sin(angle) ) / 2;
     aireTotale += aireTriangle;
     i++;
     }
 
 
 
 */