PRJ1401_LIDAR / Mbed 2 deprecated Nucleo_Une_Mesure

Dependencies:   PwmIn mbed

Committer:
karteck
Date:
Tue Feb 26 14:17:36 2019 +0000
Revision:
2:656a20620e62
Parent:
0:f07bc5dab40d
Child:
3:e750507bf900

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nilox 0:f07bc5dab40d 1 #include "mbed.h"
Nilox 0:f07bc5dab40d 2 #include <PwmIn.h>
karteck 2:656a20620e62 3 #include <stdio.h>
Nilox 0:f07bc5dab40d 4
Nilox 0:f07bc5dab40d 5 DigitalIn mybutton(USER_BUTTON);
Nilox 0:f07bc5dab40d 6 DigitalOut trig(PA_10);
Nilox 0:f07bc5dab40d 7 Serial pc(USBTX,USBRX);
Nilox 0:f07bc5dab40d 8 PwmIn LidarI(PB_3);
Nilox 0:f07bc5dab40d 9
Nilox 0:f07bc5dab40d 10 float mes = 0;
karteck 2:656a20620e62 11 int arret = 0, n = 0, i = 0;
Nilox 0:f07bc5dab40d 12
Nilox 0:f07bc5dab40d 13 float boucleM(){
Nilox 0:f07bc5dab40d 14 wait_ms(10);
karteck 2:656a20620e62 15 mes = LidarI.pulsewidth() / 10;
Nilox 0:f07bc5dab40d 16 if(mes!=0){
karteck 2:656a20620e62 17 pc.printf("Mesure : %f\n",mes);
Nilox 0:f07bc5dab40d 18 } else pc.printf("Erreur : valeur nulles.\n");
Nilox 0:f07bc5dab40d 19 arret = !mybutton.read();
karteck 2:656a20620e62 20 return (mes);
Nilox 0:f07bc5dab40d 21 }
karteck 2:656a20620e62 22
karteck 2:656a20620e62 23
karteck 2:656a20620e62 24 void rotation(float angle){
karteck 2:656a20620e62 25
karteck 2:656a20620e62 26
karteck 2:656a20620e62 27 }
Nilox 0:f07bc5dab40d 28
Nilox 0:f07bc5dab40d 29
Nilox 0:f07bc5dab40d 30 int main() {
karteck 2:656a20620e62 31 float aireTotale = 0, aireTriangle = 0, angle;
karteck 2:656a20620e62 32
karteck 2:656a20620e62 33
karteck 2:656a20620e62 34
Nilox 0:f07bc5dab40d 35 pc.printf("\nLancement du programme...\n");
Nilox 0:f07bc5dab40d 36 pc.printf("Combien de mesures allez-vous prendre ?\n");
Nilox 0:f07bc5dab40d 37 pc.scanf("%d",&n);
Nilox 0:f07bc5dab40d 38 pc.printf("%d\n\n",n);
Nilox 0:f07bc5dab40d 39 float tabM[n];
Nilox 0:f07bc5dab40d 40
karteck 2:656a20620e62 41 angle = 360 / n; // Angle de chaque rotation du moteur
karteck 2:656a20620e62 42
Nilox 0:f07bc5dab40d 43 trig = 1;
Nilox 0:f07bc5dab40d 44 trig=0;
Nilox 0:f07bc5dab40d 45 wait_us(500);
karteck 2:656a20620e62 46
karteck 2:656a20620e62 47 tabM[i]=boucleM();
karteck 2:656a20620e62 48 i++;
Nilox 0:f07bc5dab40d 49 while(i<n){
Nilox 0:f07bc5dab40d 50 tabM[i]=boucleM();
Nilox 0:f07bc5dab40d 51 i++;
karteck 2:656a20620e62 52 //Fonction rotation moteur rotation(float angle);
karteck 2:656a20620e62 53 wait(2);
karteck 2:656a20620e62 54
karteck 2:656a20620e62 55 aireTriangle = (tabM[i - 1] * tabM[i] * sin(angle) ) / 2;
karteck 2:656a20620e62 56 aireTotale += aireTriangle;
Nilox 0:f07bc5dab40d 57 }
Nilox 0:f07bc5dab40d 58 i=0;
Nilox 0:f07bc5dab40d 59 while(i<n){
karteck 2:656a20620e62 60 pc.printf("M(%d):[%f]\n",i ,tabM[i]);
Nilox 0:f07bc5dab40d 61 i=i++;
Nilox 0:f07bc5dab40d 62 }
karteck 2:656a20620e62 63
karteck 2:656a20620e62 64 pc.printf("\n Aire total : %f \n", aireTotale);
Nilox 0:f07bc5dab40d 65 pc.printf("Arret du programme...");
Nilox 0:f07bc5dab40d 66 sleep();
Nilox 0:f07bc5dab40d 67 }
karteck 2:656a20620e62 68
karteck 2:656a20620e62 69
karteck 2:656a20620e62 70
karteck 2:656a20620e62 71
karteck 2:656a20620e62 72
karteck 2:656a20620e62 73
karteck 2:656a20620e62 74
karteck 2:656a20620e62 75 /* DEUXIEME VERSION A METTRE DANS MAIN
karteck 2:656a20620e62 76 passe dans la tableau et calcule l'aire une fois que les mesures sont prises
karteck 2:656a20620e62 77
karteck 2:656a20620e62 78
karteck 2:656a20620e62 79 i = 1;
karteck 2:656a20620e62 80 while (i < n){
karteck 2:656a20620e62 81
karteck 2:656a20620e62 82 aireTriangle = (tabM[i - 1] * tabM[i] * sin(angle) ) / 2;
karteck 2:656a20620e62 83 aireTotale += aireTriangle;
karteck 2:656a20620e62 84 i++;
karteck 2:656a20620e62 85 }
karteck 2:656a20620e62 86
karteck 2:656a20620e62 87
karteck 2:656a20620e62 88
karteck 2:656a20620e62 89 */
karteck 2:656a20620e62 90
karteck 2:656a20620e62 91
karteck 2:656a20620e62 92
karteck 2:656a20620e62 93
karteck 2:656a20620e62 94
karteck 2:656a20620e62 95
karteck 2:656a20620e62 96
karteck 2:656a20620e62 97
Nilox 0:f07bc5dab40d 98