Version initiale

Dependencies:   mbed

Fork of Le_Pont_V10116 by SAGNES Christophe

Committer:
CS
Date:
Thu Mar 29 15:41:22 2018 +0000
Revision:
2:a10c8133d71c
Parent:
1:570ba62fab91
Publish of "Le_Pont_V11003" in the team folder

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CS 0:8b3c6f593515 1 //******************************************************************
CS 0:8b3c6f593515 2 //
CS 0:8b3c6f593515 3 // Gemma
CS 0:8b3c6f593515 4 //
CS 0:8b3c6f593515 5 // Logiciel de gestion des modes de marche et d'arret du Pont Bacalan
CS 0:8b3c6f593515 6 //
CS 0:8b3c6f593515 7 //
CS 0:8b3c6f593515 8 //
CS 0:8b3c6f593515 9 //********************************************************************
CS 0:8b3c6f593515 10
CS 0:8b3c6f593515 11 #include "Gemma.h"
CS 0:8b3c6f593515 12
CS 0:8b3c6f593515 13 Serial PC3(USBTX, USBRX) ;
CS 0:8b3c6f593515 14 // Chronomètre
CS 0:8b3c6f593515 15 Timer Chrono_Param ;
CS 0:8b3c6f593515 16 AnalogOut Consigne_aout (p18) ;
CS 0:8b3c6f593515 17
CS 0:8b3c6f593515 18 U8 No_Parametre ;
CS 0:8b3c6f593515 19 S16 *pParametres_Console_RG ;
CS 0:8b3c6f593515 20 S16 *pParametres_Console_RD ;
CS 0:8b3c6f593515 21
CS 0:8b3c6f593515 22 void vGemma_Init ()
CS 0:8b3c6f593515 23 {
CS 0:8b3c6f593515 24 Chrono_Param.start () ;
CS 0:8b3c6f593515 25 pParametres_Console_RG = &Param_Version_RG ;
CS 0:8b3c6f593515 26 pParametres_Console_RD = &Param_Version_RD ;
CS 0:8b3c6f593515 27 No_Parametre = 0 ;
CS 0:8b3c6f593515 28 Consigne_aout.write ( 0.0 ) ;
CS 0:8b3c6f593515 29 }
CS 0:8b3c6f593515 30
CS 0:8b3c6f593515 31 void vGemma ( Pilote* pRive_Droite , Pilote* pRive_Gauche )
CS 0:8b3c6f593515 32 {
CS 0:8b3c6f593515 33 // Fonctionnement des differents modes
CS 0:8b3c6f593515 34 PC3.printf("\r\n Mode: %i", Mode_Fonctionnement) ;
CS 0:8b3c6f593515 35 if ( Mode_Fonctionnement == MODE_MANUEL )
CS 0:8b3c6f593515 36 // En mode manuel, pas d'action maintenue, les 2 rives sont indépendantes
CS 0:8b3c6f593515 37 {
CS 0:8b3c6f593515 38 //Raz des parametres de synchronisation
CS 0:8b3c6f593515 39 vSynchro_Initialise ( ) ;
CS 0:8b3c6f593515 40
CS 0:8b3c6f593515 41 if ( BTN_Monte_RD )
CS 0:8b3c6f593515 42 {// Montée rive droite
CS 2:a10c8133d71c 43 if ( ( Hauteur_RD - Hauteur_RG ) < Defaut_Critique_Manu_mm )
CS 0:8b3c6f593515 44 {
CS 0:8b3c6f593515 45 PC3.printf("\t Monte RD") ;
CS 0:8b3c6f593515 46 pRive_Droite->Marche ( MODE_MANUEL, MONTE, Hauteur_maxi , Consigne_Vitesse_Manu ) ;
CS 0:8b3c6f593515 47 }
CS 2:a10c8133d71c 48 else
CS 2:a10c8133d71c 49 {
CS 2:a10c8133d71c 50 pRive_Droite->Arret() ;
CS 2:a10c8133d71c 51 }
CS 2:a10c8133d71c 52
CS 0:8b3c6f593515 53 BTN_Descend_RD = 0 ;
CS 0:8b3c6f593515 54 }
CS 0:8b3c6f593515 55 else if ( BTN_Descend_RD )
CS 0:8b3c6f593515 56 {// Descente rive droite
CS 2:a10c8133d71c 57 if ( ( Hauteur_RG - Hauteur_RD ) < Defaut_Critique_Manu_mm )
CS 0:8b3c6f593515 58 {
CS 0:8b3c6f593515 59 PC3.printf("\t Descend RD") ;
CS 0:8b3c6f593515 60 pRive_Droite->Marche ( MODE_MANUEL, DESCEND, Hauteur_mini , Consigne_Vitesse_Manu ) ;
CS 0:8b3c6f593515 61 }
CS 2:a10c8133d71c 62 else
CS 2:a10c8133d71c 63 {
CS 2:a10c8133d71c 64 pRive_Droite->Arret() ;
CS 2:a10c8133d71c 65 }
CS 0:8b3c6f593515 66 BTN_Monte_RD = 0 ;
CS 0:8b3c6f593515 67 }
CS 0:8b3c6f593515 68 else
CS 0:8b3c6f593515 69 {// Arrêt rive droite
CS 0:8b3c6f593515 70 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 71 BTN_Descend_RD = 0 ;
CS 0:8b3c6f593515 72 BTN_Monte_RD = 0 ;
CS 0:8b3c6f593515 73 //PC3.printf("\r\n Arret RD") ;
CS 0:8b3c6f593515 74 }
CS 0:8b3c6f593515 75 if ( BTN_Monte_RG )
CS 0:8b3c6f593515 76 {// Montée rive gauche
CS 2:a10c8133d71c 77 if ( ( Hauteur_RG - Hauteur_RD ) < Defaut_Critique_Manu_mm )
CS 0:8b3c6f593515 78 {
CS 0:8b3c6f593515 79 PC3.printf("\t Monte RG") ;
CS 0:8b3c6f593515 80 pRive_Gauche->Marche ( MODE_MANUEL, MONTE, Hauteur_maxi , Consigne_Vitesse_Manu ) ;
CS 0:8b3c6f593515 81 Consigne_aout.write ( (F32) Consigne_Vitesse_Manu / V_MAX ) ;
CS 0:8b3c6f593515 82 }
CS 2:a10c8133d71c 83 else
CS 2:a10c8133d71c 84 {
CS 2:a10c8133d71c 85 pRive_Gauche->Arret() ;
CS 2:a10c8133d71c 86 }
CS 0:8b3c6f593515 87 BTN_Descend_RG = 0 ;
CS 0:8b3c6f593515 88 }
CS 0:8b3c6f593515 89 else if ( BTN_Descend_RG )
CS 0:8b3c6f593515 90 {// Descente rive gauche
CS 2:a10c8133d71c 91 if ( ( Hauteur_RD - Hauteur_RG ) < Defaut_Critique_Manu_mm )
CS 0:8b3c6f593515 92 {
CS 0:8b3c6f593515 93 PC3.printf("\t Descend RG") ;
CS 0:8b3c6f593515 94 pRive_Gauche->Marche ( MODE_MANUEL, DESCEND, Hauteur_mini , Consigne_Vitesse_Manu ) ;
CS 0:8b3c6f593515 95 Consigne_aout.write ( (F32) Consigne_Vitesse_Manu / V_MAX ) ;
CS 0:8b3c6f593515 96 }
CS 2:a10c8133d71c 97 else
CS 2:a10c8133d71c 98 {
CS 2:a10c8133d71c 99 pRive_Gauche->Arret() ;
CS 2:a10c8133d71c 100 }
CS 0:8b3c6f593515 101 BTN_Monte_RG = 0 ;
CS 0:8b3c6f593515 102 }
CS 0:8b3c6f593515 103 else
CS 0:8b3c6f593515 104 {// Arret rive gauche
CS 0:8b3c6f593515 105 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 106 BTN_Monte_RG = 0 ;
CS 0:8b3c6f593515 107 BTN_Descend_RG = 0 ;
CS 0:8b3c6f593515 108 Consigne_aout.write ( 0.0 ) ;
CS 0:8b3c6f593515 109 //PC3.printf("\r\n Arret RG") ;
CS 0:8b3c6f593515 110 }
CS 0:8b3c6f593515 111 if ( BTN_Frein )
CS 0:8b3c6f593515 112 {// Liberation des freins
CS 0:8b3c6f593515 113 if ( !BTN_Monte_RG && !BTN_Descend_RG && !!BTN_Monte_RD && !BTN_Descend_RD )
CS 0:8b3c6f593515 114 {
CS 0:8b3c6f593515 115 if (pRive_Gauche->Etat_Frein == SERRE ) pRive_Gauche->Frein( DESSERRE ) ;
CS 0:8b3c6f593515 116 if (pRive_Droite->Etat_Frein == SERRE ) pRive_Droite->Frein( DESSERRE ) ;
CS 0:8b3c6f593515 117 }
CS 0:8b3c6f593515 118 }
CS 0:8b3c6f593515 119 else
CS 0:8b3c6f593515 120 {// Serrage des freins
CS 0:8b3c6f593515 121 if ( !BTN_Monte_RG && !BTN_Descend_RG && !!BTN_Monte_RD && !BTN_Descend_RD )
CS 0:8b3c6f593515 122 {
CS 0:8b3c6f593515 123 if (pRive_Gauche->Etat_Frein == DESSERRE ) pRive_Gauche->Frein( SERRE ) ;
CS 0:8b3c6f593515 124 if (pRive_Droite->Etat_Frein == DESSERRE ) pRive_Droite->Frein( SERRE ) ;
CS 0:8b3c6f593515 125 }
CS 0:8b3c6f593515 126 }
CS 0:8b3c6f593515 127 }
CS 0:8b3c6f593515 128
CS 0:8b3c6f593515 129 else if ( Mode_Fonctionnement == MODE_AUTOMATIQUE )
CS 0:8b3c6f593515 130 {// En mode automatique, les rives sont synchronisées, avec consigne de vitesse et hauteur cible
CS 0:8b3c6f593515 131 if ( BTN_Arret )
CS 0:8b3c6f593515 132 {// Arret du pont
CS 0:8b3c6f593515 133 BTN_Monte = 0 ;
CS 0:8b3c6f593515 134 BTN_Descend = 0 ;
CS 0:8b3c6f593515 135 BTN_Arret = 0 ;
CS 0:8b3c6f593515 136 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 137 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 138 Consigne_aout.write ( 0.0 ) ;
CS 0:8b3c6f593515 139
CS 0:8b3c6f593515 140 vSynchro_Initialise ( ) ;
CS 0:8b3c6f593515 141
CS 0:8b3c6f593515 142 //PC3.printf("\r\n Btn Arret") ;
CS 0:8b3c6f593515 143 }
CS 0:8b3c6f593515 144 else
CS 0:8b3c6f593515 145 {// Vérification de l'ecart de synchronisation: différence de hauteur entre droite et gauche
CS 0:8b3c6f593515 146 if ( abs( Hauteur_RD - Hauteur_RG ) > Defaut_Critique_Synchro )
CS 0:8b3c6f593515 147 {// Si l'ecart depasse le seuil critique: on arrete tout!
CS 0:8b3c6f593515 148 BTN_Arret = 0 ;
CS 0:8b3c6f593515 149 BTN_Descend = 0 ;
CS 0:8b3c6f593515 150 BTN_Monte = 0 ;
CS 0:8b3c6f593515 151 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 152 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 153 Consigne_aout.write ( 0.0 ) ;
CS 0:8b3c6f593515 154 PC3.printf("\r\n Defaut Critique") ;
CS 0:8b3c6f593515 155 }
CS 0:8b3c6f593515 156 else if ( BTN_Monte )
CS 0:8b3c6f593515 157 {// Si on est en haut
CS 0:8b3c6f593515 158 if ( ( Hauteur_P >= Consigne_Haute_P )
CS 0:8b3c6f593515 159 ||( Hauteur_RD >= Consigne_Haute_P )
CS 0:8b3c6f593515 160 ||( Hauteur_RG >= Consigne_Haute_P ) )
CS 0:8b3c6f593515 161 {
CS 0:8b3c6f593515 162 BTN_Monte = 0 ;
CS 0:8b3c6f593515 163 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 164 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 165 PC3.printf("\r\n En Haut") ;
CS 0:8b3c6f593515 166 }
CS 0:8b3c6f593515 167 else
CS 0:8b3c6f593515 168 {// Montée
CS 0:8b3c6f593515 169 PC3.printf("\t Monte Auto mode: %i", Mode_Synchro) ;
CS 0:8b3c6f593515 170 vSynchronise ( Mode_Synchro , MONTE ) ;
CS 0:8b3c6f593515 171 pRive_Droite->Marche ( MODE_AUTOMATIQUE, MONTE, Consigne_Haute_P , Consigne_Vitesse_RD ) ;
CS 0:8b3c6f593515 172 pRive_Gauche->Marche ( MODE_AUTOMATIQUE, MONTE, Consigne_Haute_P , Consigne_Vitesse_RG ) ;
CS 0:8b3c6f593515 173 Consigne_aout.write ( (F32) Consigne_Vitesse_RG / V_MAX ) ;
CS 0:8b3c6f593515 174 }
CS 0:8b3c6f593515 175
CS 0:8b3c6f593515 176 BTN_Arret = 0 ;
CS 0:8b3c6f593515 177 BTN_Descend = 0 ;
CS 0:8b3c6f593515 178 }
CS 0:8b3c6f593515 179 else if ( BTN_Descend )
CS 0:8b3c6f593515 180 {
CS 0:8b3c6f593515 181 if ( ( Hauteur_P <= Consigne_Basse_P )
CS 0:8b3c6f593515 182 ||( Hauteur_RD <= Consigne_Basse_P )
CS 0:8b3c6f593515 183 ||( Hauteur_RG <= Consigne_Basse_P ) )
CS 0:8b3c6f593515 184 {// Si on est en bas
CS 0:8b3c6f593515 185 BTN_Descend = 0 ;
CS 0:8b3c6f593515 186 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 187 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 188 PC3.printf("\r\n En Bas") ;
CS 0:8b3c6f593515 189 }
CS 0:8b3c6f593515 190 else
CS 0:8b3c6f593515 191 {// Descente du pont
CS 0:8b3c6f593515 192 PC3.printf("\t Descend Auto") ;
CS 0:8b3c6f593515 193 PC3.printf("\t Descend Auto mode: %i", Mode_Synchro) ;
CS 0:8b3c6f593515 194 vSynchronise ( Mode_Synchro , DESCEND ) ;
CS 0:8b3c6f593515 195 Consigne_Vitesse_RD = Consigne_Vitesse_Auto ;
CS 0:8b3c6f593515 196 Consigne_Vitesse_RG = Consigne_Vitesse_Auto ;
CS 0:8b3c6f593515 197
CS 0:8b3c6f593515 198 pRive_Droite->Marche ( MODE_AUTOMATIQUE, DESCEND, Consigne_Basse_P , Consigne_Vitesse_RD ) ;
CS 0:8b3c6f593515 199 pRive_Gauche->Marche ( MODE_AUTOMATIQUE, DESCEND, Consigne_Basse_P , Consigne_Vitesse_RG ) ;
CS 0:8b3c6f593515 200 Consigne_aout.write ( (F32) Consigne_Vitesse_RG / V_MAX ) ;
CS 0:8b3c6f593515 201 }
CS 0:8b3c6f593515 202
CS 0:8b3c6f593515 203 BTN_Arret = 0 ;
CS 0:8b3c6f593515 204 BTN_Monte = 0 ;
CS 0:8b3c6f593515 205 }
CS 0:8b3c6f593515 206
CS 0:8b3c6f593515 207 else
CS 0:8b3c6f593515 208 {
CS 0:8b3c6f593515 209 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 210 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 211 Consigne_aout.write ( 0.0 ) ;
CS 0:8b3c6f593515 212 }
CS 0:8b3c6f593515 213 }
CS 0:8b3c6f593515 214 }
CS 0:8b3c6f593515 215 else if ( Mode_Fonctionnement == MODE_PARAMETRAGE )
CS 0:8b3c6f593515 216 {// En mode parametrage,
CS 0:8b3c6f593515 217 //PC3.printf("\r\n No Param = %i " , No_Parametre) ;
CS 0:8b3c6f593515 218
CS 0:8b3c6f593515 219 if ( Chrono_Param.read_ms() > PERIODE_MAJ_PARAM )
CS 0:8b3c6f593515 220 {
CS 0:8b3c6f593515 221 Chrono_Param.reset () ;
CS 0:8b3c6f593515 222 // Vérifie si le dernier parametre lu est a jour
CS 0:8b3c6f593515 223 if ( *(pParametres_Console_RG + No_Parametre ) != (S16) ( pRive_Gauche->Parametres_Vario_S32 [ No_Parametre ] ) )
CS 0:8b3c6f593515 224 {// Sinon, on l'écrit dans le variateur
CS 0:8b3c6f593515 225 PC3.printf("\r\n No Param RG= %i - %i " , *(pParametres_Console_RG + No_Parametre ) , pRive_Gauche->Parametres_Vario_S32 [ No_Parametre ] ) ;
CS 0:8b3c6f593515 226 pRive_Gauche->Configure ( No_Parametre , (S32) *(pParametres_Console_RG + No_Parametre ) ) ;
CS 0:8b3c6f593515 227 }
CS 0:8b3c6f593515 228 // Vérifie si le dernier parametre lu est a jour
CS 0:8b3c6f593515 229 if ( *(pParametres_Console_RD + No_Parametre ) != (S16) ( pRive_Droite->Parametres_Vario_S32 [ No_Parametre ] ) )
CS 0:8b3c6f593515 230 {// Sinon, on l'écrit dans le variateur
CS 0:8b3c6f593515 231 PC3.printf("\r\n No Param RD= %i - %i " , *(pParametres_Console_RD + No_Parametre ) , pRive_Droite->Parametres_Vario_S32 [ No_Parametre ] ) ;
CS 0:8b3c6f593515 232 pRive_Droite->Configure ( No_Parametre , (S32) *(pParametres_Console_RD + No_Parametre ) ) ;
CS 0:8b3c6f593515 233 }
CS 0:8b3c6f593515 234 No_Parametre++ ;
CS 0:8b3c6f593515 235 if ( No_Parametre >= NB_PARAM_VARIATEUR )
CS 0:8b3c6f593515 236 {
CS 0:8b3c6f593515 237 No_Parametre = 0 ;
CS 1:570ba62fab91 238 pRive_Droite->Arret() ;
CS 1:570ba62fab91 239 pRive_Gauche->Arret() ;
CS 1:570ba62fab91 240 Consigne_aout.write ( 0.0 ) ;
CS 0:8b3c6f593515 241 }
CS 0:8b3c6f593515 242 // Lecture du parametre suivant
CS 0:8b3c6f593515 243 pRive_Gauche->Lecture ( No_Parametre ) ;
CS 0:8b3c6f593515 244 pRive_Droite->Lecture ( No_Parametre ) ;
CS 0:8b3c6f593515 245
CS 0:8b3c6f593515 246 }
CS 0:8b3c6f593515 247
CS 0:8b3c6f593515 248 }
CS 0:8b3c6f593515 249 else if ( Mode_Fonctionnement == MODE_ETALONNAGE )
CS 0:8b3c6f593515 250 {// Etalonnage
CS 0:8b3c6f593515 251 if ( BTN_Etalonnage )
CS 0:8b3c6f593515 252 {
CS 0:8b3c6f593515 253 pRive_Droite->Etalonnage (Hauteur_RD1_pts , Hauteur_RD1_mm , Hauteur_RD2_pts , Hauteur_RD2_mm ) ;
CS 0:8b3c6f593515 254 pRive_Gauche->Etalonnage (Hauteur_RG1_pts , Hauteur_RG1_mm , Hauteur_RG2_pts , Hauteur_RG2_mm ) ;
CS 0:8b3c6f593515 255 BTN_Etalonnage = 0 ;
CS 0:8b3c6f593515 256 wait(0.1) ;
CS 0:8b3c6f593515 257 }
CS 0:8b3c6f593515 258 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 259 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 260 }
CS 0:8b3c6f593515 261
CS 0:8b3c6f593515 262 else if ( Mode_Fonctionnement == MODE_ALIGNEMENT )
CS 0:8b3c6f593515 263 {
CS 0:8b3c6f593515 264 if ( BTN_Aligne)
CS 0:8b3c6f593515 265 {// Alignement des hauteurs de pile pour le mode automatique
CS 0:8b3c6f593515 266 if ( abs( Hauteur_RD - Hauteur_RG ) < Defaut_Mineur_Synchro / 2 )
CS 0:8b3c6f593515 267 {// Si l'ecart de hauteur est faible, on arrête tout
CS 0:8b3c6f593515 268 BTN_Aligne = 0 ;
CS 0:8b3c6f593515 269 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 270 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 271 PC3.printf("\r\n Aligne") ;
CS 0:8b3c6f593515 272 }
CS 0:8b3c6f593515 273 else if ( Hauteur_RD > Hauteur_RG )
CS 0:8b3c6f593515 274 {// La pile droite est plus haute
CS 0:8b3c6f593515 275 if ( Hauteur_RD > Consigne_Basse_P )
CS 0:8b3c6f593515 276 {// On descend la pile droite
CS 0:8b3c6f593515 277 Consigne_Vitesse_RD = Consigne_Vitesse_Manu ;
CS 0:8b3c6f593515 278 pRive_Droite->Marche ( MODE_AUTOMATIQUE, DESCEND, Hauteur_RG , Consigne_Vitesse_RD ) ;
CS 0:8b3c6f593515 279 }
CS 0:8b3c6f593515 280 else
CS 0:8b3c6f593515 281 {
CS 0:8b3c6f593515 282 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 283 }
CS 0:8b3c6f593515 284 if ( Hauteur_RG < Consigne_Haute_P )
CS 0:8b3c6f593515 285 {// On monte la pile gauche
CS 0:8b3c6f593515 286 Consigne_Vitesse_RG = Consigne_Vitesse_Manu ;
CS 0:8b3c6f593515 287 pRive_Gauche->Marche ( MODE_AUTOMATIQUE, MONTE, Hauteur_RD , Consigne_Vitesse_RG ) ;
CS 0:8b3c6f593515 288 }
CS 0:8b3c6f593515 289 else
CS 0:8b3c6f593515 290 {
CS 0:8b3c6f593515 291 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 292 }
CS 0:8b3c6f593515 293 }
CS 0:8b3c6f593515 294 else if ( Hauteur_RD < Hauteur_RG )
CS 0:8b3c6f593515 295 {// La pile gauche est plus haute
CS 0:8b3c6f593515 296 if ( Hauteur_RD < Consigne_Haute_P )
CS 0:8b3c6f593515 297 {// On monte la pile droite
CS 0:8b3c6f593515 298 Consigne_Vitesse_RD = Consigne_Vitesse_Manu ;
CS 0:8b3c6f593515 299 pRive_Droite->Marche ( MODE_AUTOMATIQUE, MONTE, Hauteur_RG , Consigne_Vitesse_RD ) ;
CS 0:8b3c6f593515 300 }
CS 0:8b3c6f593515 301 else
CS 0:8b3c6f593515 302 {
CS 0:8b3c6f593515 303 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 304 }
CS 0:8b3c6f593515 305 if ( Hauteur_RG > Consigne_Basse_P )
CS 0:8b3c6f593515 306 {// On descend la pile gauche
CS 0:8b3c6f593515 307 Consigne_Vitesse_RG = Consigne_Vitesse_Manu ;
CS 0:8b3c6f593515 308 pRive_Gauche->Marche ( MODE_AUTOMATIQUE, DESCEND, Hauteur_RD , Consigne_Vitesse_RG ) ;
CS 0:8b3c6f593515 309
CS 0:8b3c6f593515 310 }
CS 0:8b3c6f593515 311 else
CS 0:8b3c6f593515 312 {
CS 0:8b3c6f593515 313 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 314 }
CS 0:8b3c6f593515 315 }
CS 0:8b3c6f593515 316 }
CS 0:8b3c6f593515 317 else
CS 0:8b3c6f593515 318 {
CS 0:8b3c6f593515 319 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 320 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 321 }
CS 0:8b3c6f593515 322 }
CS 0:8b3c6f593515 323 else
CS 0:8b3c6f593515 324 // Si le mode est inconnu, mode arret!
CS 0:8b3c6f593515 325 {
CS 0:8b3c6f593515 326 Mode_Fonctionnement = MODE_ARRET ;
CS 0:8b3c6f593515 327 pRive_Droite->Arret() ;
CS 0:8b3c6f593515 328 pRive_Gauche->Arret() ;
CS 0:8b3c6f593515 329 BTN_Arret = 1 ;
CS 0:8b3c6f593515 330 BTN_Monte = 0 ;
CS 0:8b3c6f593515 331 BTN_Descend = 0 ;
CS 0:8b3c6f593515 332 Consigne_aout.write ( 0.0 ) ;
CS 0:8b3c6f593515 333 PC3.printf("\r\n Mode Inconnu") ;
CS 0:8b3c6f593515 334 }
CS 0:8b3c6f593515 335 }