Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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++;
}
*/