From e2b42cb2933028d5a15466f2ee52c6c7480d1960 Mon Sep 17 00:00:00 2001 From: cohensol Date: Sat, 12 May 2007 04:45:09 +0000 Subject: Implementation des fonctions suivantes : - detection du color switch par la commande 'c' - mise jour de la vitesse du rouleau par la commande 'R' PP --- n/es-2007/src/Makefile | 2 +- n/es-2007/src/ascenseur.c | 23 +++++++++++++++++++---- n/es-2007/src/ascenseur.h | 2 ++ n/es-2007/src/main.c | 34 +++++++++++++++------------------- 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/n/es-2007/src/Makefile b/n/es-2007/src/Makefile index 74256f5..a819f51 100644 --- a/n/es-2007/src/Makefile +++ b/n/es-2007/src/Makefile @@ -1,7 +1,7 @@ BASE = ../../avr AVR_PROGS = es es_SOURCES = main.c sensor_rvb.c sniff_rvb.c timer_1.c ascenseur.c \ - servo_motor.c sharp.c lcd.c ack.c capteurs.c + servo_motor.c sharp.c lcd.c ack.c MODULES = proto uart utils adc twi CONFIGFILE = avrconfig.h # atmega8, atmega8535, atmega128... diff --git a/n/es-2007/src/ascenseur.c b/n/es-2007/src/ascenseur.c index ef0a6c6..562cd49 100644 --- a/n/es-2007/src/ascenseur.c +++ b/n/es-2007/src/ascenseur.c @@ -29,6 +29,7 @@ #include "modules/proto/proto.h" #define OCR_AS OCR1A +#define OCR_ROULEAU OCR1B /* +AutoDec */ /* -AutoDec */ uint16_t ascenseur_temps; @@ -42,16 +43,20 @@ ascenseur_init (void) /* mode PWM = 0 */ OCR_AS = 0; /* vitesse moteur barillet nulle */ - utils_delay_us ( 1 ); /* attente_ d'1 µs pour la puiss_barillet */ + OCR_ROULEAU = 0; /* vitesse moteur rouleau nulle */ + utils_delay_us ( 1 ); /* attente_ d'1 µs pour la puiss_barillet */ } /* Fait bouger l'ascenseur. */ +// vitesse : 0-256 <=> 0% - 100% +// temps : 0-256 en unites de 17,6ms +// sens_rotat : true ou false void ascenseur_bouge (uint8_t vitesse, uint8_t temps, uint8_t sens_rotat) { ascenseur_temps= (uint16_t) temps*4; OCR_AS = 0; - utils_delay_us ( 1 ); /* attente_ d'1 µs pour la puiss_barillet */ + utils_delay_us ( 1 ); /* attente_ d'1 µs pour la puiss_barillet */ if (sens_rotat) { @@ -62,11 +67,11 @@ ascenseur_bouge (uint8_t vitesse, uint8_t temps, uint8_t sens_rotat) PORTB &= ~_BV(4); } - utils_delay_us ( 1 ); /* attente_ d'1 µs pour la puiss_barillet */ + utils_delay_us ( 1 ); /* attente_ d'1 µs pour la puiss_barillet */ OCR_AS = (uint16_t) vitesse * 4; } -/* Met à jour l'état de l'ascenseur. Il faut appeler cette fonction toute les +/* Met à jour l'état de l'ascenseur. Il faut appeler cette fonction toute les * 4.44ms. */ void ascenseur_update () @@ -80,3 +85,13 @@ ascenseur_update () } } } + +/* Fait bouger le rouleau */ +// vitesse : 0-256 <=> 0%-100% +void +rouleau_bouge (uint8_t vitesse) +{ + OCR_ROULEAU = vitesse; +} + + diff --git a/n/es-2007/src/ascenseur.h b/n/es-2007/src/ascenseur.h index 2f51fcf..46b2a7c 100644 --- a/n/es-2007/src/ascenseur.h +++ b/n/es-2007/src/ascenseur.h @@ -34,4 +34,6 @@ void ascenseur_bouge (uint8_t vitesse, uint8_t temps, uint8_t sens_rotat); void ascenseur_update (); +void +rouleau_bouge (uint8_t vitesse); #endif /* ascenseur_h */ diff --git a/n/es-2007/src/main.c b/n/es-2007/src/main.c index a78241f..bc83269 100644 --- a/n/es-2007/src/main.c +++ b/n/es-2007/src/main.c @@ -41,7 +41,6 @@ #include "lcd.h" /* Communication with the LCD card */ #include "ack.h" /* Ack module */ #include "ascenseur.h" -#include "capteurs.h" /*Captors sensors */ /* Statistics for RVB sensors */ uint8_t sensor_rvb_stat_enable[RVB_MAX_SENSOR], sensor_rvb_stats[RVB_MAX_SENSOR]; @@ -76,6 +75,9 @@ uint8_t lcd_key_enable, lcd_key_freq; /* Enable stat for ack */ uint8_t main_ack_freq, main_ack_enable; +/* Color selected by the color switch */ +uint8_t selectedColor; + /* Grub enable */ uint16_t grub_enable; @@ -140,22 +142,6 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) if (temp_16b & _BV(compt)) sniff_rvb_set_ref_color (compt, args[2]); break; - /* Print stats of the colour seen by the sensor */ - case c ('A', 1): - if(isRightHSActive()) args[0] = 1; - else args[0] = 0; - break; - - /* Print stats for ball */ - case c ('B',1 ): - if(isLeftHSActive()) args[0] = 1; - else args[0] = 0; - break; - /* Print stats for front RVB Sniff */ - case c ('C', 1): - if(isBackSideActive()) args[0] = 1; - else args[0] = 0; - break; /* RVB Hole sensor */ case c ('D', 1): sniff_rvb_hole_enable = sniff_rvb_hole_stats = args[0]; @@ -207,11 +193,23 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) lcd_grub_booting (); return; + /* Get color switch status*/ + case c ('c', 0): + selectedColor = others_selectcoul (); + proto_send ('c', 1, &selectedColor); + break; + /* Ascenseur*/ case c ('a', 3): ascenseur_bouge (args[0], args[1], args[2]); break; + /* Rouleau*/ + case c ('R', 1): + rouleau_bouge (args[0]); + break; + + /* Unknown commands */ default: proto_send0 ('?'); @@ -240,8 +238,6 @@ main (void) others_init(); /* ascenseur init */ ascenseur_init(); - /* capteurs init */ - capteurs_init(); /* Servo motor init */ servo_motor_init (); /* Sharp init */ -- cgit v1.2.3