From c995c19c769f3584a6e103a3a6fe27afd5db0c05 Mon Sep 17 00:00:00 2001 From: burg Date: Sun, 24 Apr 2005 21:43:58 +0000 Subject: Refonte de l'ascenseur par Ni --- n/es/src/main.c | 159 +++++++++++++++++++------------------------------------- 1 file changed, 53 insertions(+), 106 deletions(-) (limited to 'n/es/src/main.c') 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); } -- cgit v1.2.3