projet neotim mpp / Mbed 2 deprecated projet_v4

Dependencies:   mbed

Revision:
3:b95fe07153f1
Parent:
2:ee896365f8fe
Child:
4:1d58769720c6
diff -r ee896365f8fe -r b95fe07153f1 main.cpp
--- a/main.cpp	Mon May 25 12:31:45 2020 +0000
+++ b/main.cpp	Mon May 25 13:04:07 2020 +0000
@@ -43,8 +43,9 @@
                                                         // periode : periode de l'IT etat (pilotage moteur)
                                                         // frequence : frequence de l'IT etat (pilotage moteur)
     char command[30];    // buffer de réception du message
-    int position =0;    // comptage du nombre de 1/2 pas
-   // int consigne_position =0;
+    int Nb_pas =0;    // comptage du nombre de 1/2 pas
+    int consigne_position =0;
+   // dans le cas du firgelli :
     float a=127.47; // coefficient etalonnage capteur de position
     float b=-6.23; // coefficient etalonnage capteur de position
     // Initialisations
@@ -54,8 +55,8 @@
     IN4=0;
     timer_etat.attach(&IT_timer_etat, 0.01); // mise à jour de la commande moteur toutes les 10ms (100Hz)
     timer_reglage_vitesse.attach(&IT_timer_reglage_vitesse, 0.1); // mise à jour de la vitesse moteur  par potentiomètre toutes les 0,1s
-    fc_haut.rise(&IT_fc_haut);  // declaration des programmes kbi
-    contact.rise(&IT_contact);  //
+    fc_haut.fall(&IT_fc_haut);  // declaration des programmes kbi (SW2)
+    contact.fall(&IT_contact);  // declaration des programmes kbi (SW3)
     // boucle programme principal
     while(1) {
         // on traite la liaison serie
@@ -80,19 +81,28 @@
                 sens=0;                     // si j'ai reçu "fc_haut" désactivation du L298 et position = 0
                 ENA=0;                      // (réinitialisation du  nombre de pas)
                 ENB=0;
-                position=0;
+                Nb_pas=0;
                 }
             else if (strcmp(command,"contact")==0){
                 sens=0;                     // si j'ai reçu "contact" désactivation du L298 et position = 0
                 ENA=0;
                 ENB=0;
-                // en mode test sur système avec capteur de position 
-                Vpos=ain1.read();               // lecture du capteur de position           
-                position_mesuree=a*Vpos+b;      // calcule la position
+                /***********************************************************************************************************/
+                /******************** Traitement contact si firgelli *******************************************************/
+                /***********************************************************************************************************/
+                /*// en mode test sur système avec capteur de position 
+                Vpos=ain1.read();               // lecture du capteur de position (firgelli)          
+                position_mesuree=a*Vpos+b;      // calcule la position (firgelli)
                 printf("Npas : %d , Vpos : %f , Position mesuree : %f \n", position,Vpos,position_mesuree);     
                 // sur le vrai système
                 //position_mesuree=position*0.0125;
-                //printf("nb pas = %d\n", position_mesuree);          
+                //printf("nb pas = %d\n", position_mesuree);        */
+                 /***********************************************************************************************************/
+                /******************** Traitement contact si moteur pas à pas ************************************************/
+                /***********************************************************************************************************/
+                // en mode test sur système avec capteur de position 
+                position_mesuree=Nb_pas*0.0125;
+                printf("Npas : %d , Vpos : %f , Position mesuree : %f \n", Nb_pas,Vpos,position_mesuree);                              
                 }
             else if(strcmp(command,"vitesse")==0) { // trame vitesse : "vitesse<CR>XXXX<CR>" où XXXX représente la frequence de pilotage du moteur
                 pc.scanf("%s",command); // lecture de XXXX la frequence de pilotage
@@ -111,12 +121,12 @@
         {
             if (sens ==1) {
                 etat++;
-                position++;
+                Nb_pas++;
                 if (etat>7) etat=0;
                 }
             else if (sens==-1){
                 etat--;
-                position--;
+                Nb_pas--;
                 if (etat<0) etat=7;
                 }
             switch (etat) {
@@ -175,20 +185,32 @@
             flag_timer_etat=0;
             }
     if (flag_fc_haut==1){       // si j'ai un appui sur BP fc_haut : désactivation du L298 et position = 0
-                position=0;
+                Nb_pas=0;
                 sens=0;
                 ENA=0;
                 ENB=0;
                 flag_fc_haut=0;
                 }
     if (flag_contact==1){       // si j'ai un appui sur BP contact : désactivation du L298 et envoi de la position
-                sens=0;
+                sens=0;                     // si j'ai reçu "contact" désactivation du L298 et position = 0
                 ENA=0;
                 ENB=0;
-                //position_mesuree=position*0.0125; // sur le vrai système
-                //printf("nb pas = %d\n", position_mesuree);     
-                printf("position : %d \n",position); 
-                flag_contact=0;
+                /***********************************************************************************************************/
+                /******************** Traitement contact si firgelli *******************************************************/
+                /***********************************************************************************************************/
+                /*// en mode test sur système avec capteur de position 
+                Vpos=ain1.read();               // lecture du capteur de position (firgelli)          
+                position_mesuree=a*Vpos+b;      // calcule la position (firgelli)
+                printf("Npas : %d , Vpos : %f , Position mesuree : %f \n", position,Vpos,position_mesuree);     
+                // sur le vrai système
+                //position_mesuree=position*0.0125;
+                //printf("nb pas = %d\n", position_mesuree);        */
+                 /***********************************************************************************************************/
+                /******************** Traitement contact si moteur pas à pas ************************************************/
+                /***********************************************************************************************************/
+                // en mode test sur système avec capteur de position 
+                position_mesuree=Nb_pas*0.0125;
+                printf("Npas : %d , Vpos : %f , Position mesuree : %f \n", Nb_pas,Vpos,position_mesuree);                              
                 }
     if (flag_timer_reglage_vitesse==1){
                 Vpot=ain0.read(); // Vpot varie de 0 à 100% (0 à 1) en fonction du réglage vitesse