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.
Diff: main.cpp
- 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++;
}