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.
Dependencies: mbed
Diff: main.cpp
- 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