summaryrefslogtreecommitdiff
path: root/n/es/src/main.c
diff options
context:
space:
mode:
authorburg2005-04-24 21:43:58 +0000
committerburg2005-04-24 21:43:58 +0000
commitc995c19c769f3584a6e103a3a6fe27afd5db0c05 (patch)
tree405e09a637246e925970f858a828431a514c0f31 /n/es/src/main.c
parent7d1f86949f4b72895aaf675a1f001d834160369b (diff)
Refonte de l'ascenseur par Ni
Diffstat (limited to 'n/es/src/main.c')
-rw-r--r--n/es/src/main.c159
1 files changed, 53 insertions, 106 deletions
diff --git a/n/es/src/main.c b/n/es/src/main.c
index 9f3ecb5..3802523 100644
--- a/n/es/src/main.c
+++ b/n/es/src/main.c
@@ -44,19 +44,10 @@ char buffer_serie ; // buffer RS232
const uint16_t prescaler = 8;// prescaler
uint16_t tableau_longueur[25];
uint16_t SEUIL = 0x0100;
-uint8_t mesure = 0;
-uint8_t ascenseur = 0;
+uint8_t mesure;
+uint8_t ascenseur;
+uint8_t ventouse;
uint8_t pont;
-uint8_t vitesse_ascenseur_m = 0;
-uint8_t vitesse_ascenseur_d = 0;
-uint8_t vitesse_ascenseur = 0;
-uint8_t commande = 0;
-uint8_t vitesse_montee_max = 0;
-uint8_t vitesse_descente_max = 0;
-uint8_t accel_montee = 0;
-uint8_t accel_descente = 0;
-uint8_t decel_montee = 0;
-uint8_t decel_descente = 0;
int main (void)
{
@@ -67,7 +58,7 @@ int main (void)
/// intialisation
DDRD = 0xC0;
DDRA = 0x00;
- DDRB = 0x11;
+ DDRB = 0x13;
DDRC = 0x00;
rs232_init ();
@@ -81,7 +72,6 @@ int main (void)
mesure = 0;
etat = 1;
clk = 1;
- commande = 10;
sei (); // on met les interruptions
@@ -131,70 +121,15 @@ int main (void)
}
if(ascenseur == 1)
{
-
- switch(commande)
+ ascenseur_update ();
+ }
+ if (ventouse)
+ {
+ ventouse--;
+ if (!ventouse)
{
- case MONTE:
-
- if(!capteur_haut())
- {
- if(vitesse_ascenseur > 0xF0)
- {
- asc_stable(vitesse_ascenseur);
- }
- else
- {
- vitesse_ascenseur += accel_montee;
- asc_haut(vitesse_ascenseur);
- }
- }
- else
- {
- if(vitesse_ascenseur > vitesse_montee_max) vitesse_ascenseur -= decel_montee;
- asc_haut(vitesse_ascenseur);
- proto_send1b('O',vitesse_ascenseur);
- }
- break;
- case DESCEND:
-
- if(!capteur_bas())
- {
-
-
- if(vitesse_ascenseur > 0xF0)
- {
- asc_stable(vitesse_ascenseur);
- }
- else
- {
- vitesse_ascenseur += decel_descente;
- asc_bas(vitesse_ascenseur);
- }
- }
-
- else
- {
- if(vitesse_ascenseur > vitesse_descente_max) vitesse_ascenseur -= accel_descente;
- asc_bas(vitesse_ascenseur);
- proto_send1b('O',vitesse_ascenseur);
- }
-
- break;
- case STABLE :
- asc_stable(vitesse_ascenseur);
- proto_send1b('O',vitesse_ascenseur);
-
- break;
- case MONTE_M :
- asc_haut(vitesse_ascenseur);
- proto_send1b('O',vitesse_ascenseur);
- break;
- case DESCEND_M :
- asc_bas(vitesse_ascenseur);
- proto_send1b('O',vitesse_ascenseur);
- break;
+ PORTB &= ~_BV (1);
}
-
}
}
@@ -229,49 +164,61 @@ void proto_callback (uint8_t cmd, uint8_t size,uint8_t* args)
case c ('m',0): { // ordre de monter l'ascenseur
etat = 1;
ascenseur = 1;
- vitesse_ascenseur = vitesse_ascenseur_m;
- commande = MONTE;
-
+ ascenseur_min = ascenseur_min_monte;
+ ascenseur_max = ascenseur_max_monte;
+ ascenseur_accel = ascenseur_accel_monte;
+ ascenseur_vitesse = ascenseur_min;
+ ascenseur_vitesse_voulue = ascenseur_max;
+ ascenseur_state = ASCENSEUR_MONTE;
}break;
case c ('d',0): { // ordre de descendre l'ascenseur
etat = 1;
ascenseur = 1;
- vitesse_ascenseur = vitesse_ascenseur_d;
- commande = DESCEND;
+ ascenseur_min = ascenseur_min_descend;
+ ascenseur_max = ascenseur_max_descend;
+ ascenseur_accel = ascenseur_accel_descend;
+ ascenseur_vitesse = ascenseur_min;
+ ascenseur_vitesse_voulue = ascenseur_max;
+ ascenseur_state = ASCENSEUR_DESCEND;
}break;
- case c ('s',0): { // ordre de stabiliser l'ascenseur
+ case c ('n',0): { // ordre de nilieuser l'ascenseur
etat = 1;
ascenseur = 1;
- commande = STABLE;
+ ascenseur_min = ascenseur_min_descend;
+ ascenseur_max = ascenseur_max_descend;
+ ascenseur_accel = ascenseur_accel_descend;
+ ascenseur_vitesse = ascenseur_min;
+ ascenseur_vitesse_voulue = ascenseur_max;
+ ascenseur_state = ASCENSEUR_MILIEU;
}break;
- case c ('M',1):{ // unique
- vitesse_ascenseur = args[0];
- ascenseur = 1;
- commande = MONTE_M;
- etat = 1;
- }break;
- case c ('D',1):{ // unique
- vitesse_ascenseur = args[0];
- ascenseur = 1;
- commande = DESCEND_M;
- etat = 1;
- }break;
-
- case c ('P',6):{ // unique
- ascenseur = 1;
- vitesse_ascenseur_m = args[0];
- vitesse_ascenseur_d = args[1];
- vitesse_montee_max = args[2];
- vitesse_descente_max = args[3];
- accel_montee = args[4];
- accel_descente = args[5];
- }break;
+ case c ('s',0): { // ordre de stabiliser l'ascenseur
+ etat = 1;
+ ascenseur = 1;
+ ascenseur_state = ASCENSEUR_STOP;
+ }break;
+ case c ('l',0): { // ordre de stabiliser l'ascenseur
+ etat = 1;
+ ascenseur = 1;
+ ascenseur_state = ASCENSEUR_LIBRE;
+ }break;
+ case c ('P',6): { // parametrage
+ ascenseur_min_monte = args[0];
+ ascenseur_max_monte = args[1];
+ ascenseur_accel_monte = args[2];
+ ascenseur_min_descend = args[3];
+ ascenseur_max_descend = args[4];
+ ascenseur_accel_descend = args[5];
+ }break;
+ case c ('v',1): {
+ ventouse = args[0];
+ PORTB |= _BV (1);
+ }break;
default:
- proto_send0 ('?');
+ proto_send0 ('?');
}
proto_send (cmd, size, args);
}