summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorburg2005-05-01 11:42:31 +0000
committerburg2005-05-01 11:42:31 +0000
commitad45b4df5face15604b44f47f9b086063df477bb (patch)
tree9242a05fefb6ffa08ff770aaaadb8c9c2967af22
parentf6f91b02b93a0dda3aed4753306ed67f4bdeb972 (diff)
Modification de l'automate de l'ascenseur pour qu'il détect plus de cas
d'erreurs
-rw-r--r--n/es/src/ascenseur.c41
-rw-r--r--n/es/src/ascenseur.h2
2 files changed, 37 insertions, 6 deletions
diff --git a/n/es/src/ascenseur.c b/n/es/src/ascenseur.c
index 01fb7d2..baf0881 100644
--- a/n/es/src/ascenseur.c
+++ b/n/es/src/ascenseur.c
@@ -76,12 +76,26 @@ void ascenseur_update ()
ascenseur_update_vitesse ();
asc_haut (ascenseur_vitesse);
asc_message = 255;
- if (capteur_haut())
+ asc_ordre = 0; // annulle l'éventuelle ordre utilisateur
+ if (capteur_bas())
+ ascenseur_state = CMD_Mgrande;
+ else
+ ascenseur_state = CMD_Mgrande_c;
+ break;
+ case CMD_Mgrande_c:
+ asc_ordre = 0; // annulle l'éventuelle ordre utilisateur
+ ascenseur_update_vitesse ();
+ asc_haut (ascenseur_vitesse);
+ asc_message = 255;
+ if (capteur_bas())
+ ascenseur_state = ERR;
+ else if (capteur_haut())
ascenseur_state = CMD_Mpetite;
else
ascenseur_state = CMD_Mgrande;
break;
case CMD_Mpetite: // monter en réduisant la vitesse
+ asc_ordre = 0; // annulle l'éventuelle ordre utilisateur
ascenseur_vitesse_voulue = ascenseur_min;
ascenseur_update_vitesse ();
asc_haut (ascenseur_vitesse);
@@ -106,19 +120,34 @@ void ascenseur_update ()
else
ascenseur_state = TENIR;
break;
- case CMD_D: // descente du mobile
+ case CMD_D_c:
+ asc_ordre = 0; // annulle l'éventeuelle ordre utilisateur
ascenseur_vitesse_voulue = ascenseur_max;
ascenseur_update_vitesse ();
asc_bas (ascenseur_vitesse);
asc_message = 255;
- if (!capteur_bas() || capteur_milieu())
- ascenseur_state = CMD_D;
+ if (capteur_haut())
+ ascenseur_state = CMD_D_c;
else
- ascenseur_state = WAIT;
+ ascenseur_state = CMD_D;
+ break;
+ case CMD_D: // descente du mobile
+ asc_ordre = 0; // annulle l'éventuelle ordre utilisateur
+ ascenseur_vitesse_voulue = ascenseur_max;
+ ascenseur_update_vitesse ();
+ asc_bas (ascenseur_vitesse);
+ asc_message = 255;
+ if (capteur_bas())
+ ascenseur_state = ERR;
+ else
+ if (!capteur_milieu())
+ ascenseur_state = CMD_D;
+ else
+ ascenseur_state = WAIT;
break;
case WAIT: // attente mobile normalement en bas
asc_libre();
- if (asc_message != 0) asc_message = 255;
+ if (asc_message != 0) asc_message = 3;
if (capteur_bas() && (asc_ordre ==0x01 ))
{
ascenseur_state = CMD_Mgrande;
diff --git a/n/es/src/ascenseur.h b/n/es/src/ascenseur.h
index 31783c8..cfec9f9 100644
--- a/n/es/src/ascenseur.h
+++ b/n/es/src/ascenseur.h
@@ -27,9 +27,11 @@
#include <stdint.h>
#define CMD_Mgrande 0
+#define CMD_Mgrande_c 6
#define CMD_Mpetite 1
#define TENIR 2
#define CMD_D 3
+#define CMD_D_c 7
#define WAIT 4
#define ERR 5