summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--n/es-2007/src/Makefile2
-rw-r--r--n/es-2007/src/ascenseur.c23
-rw-r--r--n/es-2007/src/ascenseur.h2
-rw-r--r--n/es-2007/src/main.c34
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 */