summaryrefslogtreecommitdiff
path: root/n/es/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'n/es/src/main.c')
-rw-r--r--n/es/src/main.c56
1 files changed, 39 insertions, 17 deletions
diff --git a/n/es/src/main.c b/n/es/src/main.c
index 7eedb9f..973e320 100644
--- a/n/es/src/main.c
+++ b/n/es/src/main.c
@@ -40,16 +40,23 @@ uint8_t etat = 1; // etat de fonctionnement du module
uint8_t sens = 1; // sens du scan
uint8_t continu = 0; // demande fait d'un envoi en continu sur le RS232
uint8_t envoie = 0; // demande fait par I2C d'un envoi
+
volatile uint8_t clk = 0; // clock de la machine d'état.
char buffer_serie ; // buffer RS232
const uint16_t prescaler = 8;// prescaler
-uint16_t tableau_longueur[25];
-uint16_t stockage_valeur_pont[4][3];
uint16_t SEUIL = 0x0100;
+
+uint8_t delay;
+uint16_t tableau_longueur_tourelle[25];
+uint8_t angle_tourelle[2];
+uint16_t stockage_valeur_pont[4][3];
+uint8_t nombre_valeur_tourelle = 0;
+
uint8_t action_tourelle;
uint8_t ascenseur;
uint8_t ventouse;
uint8_t pont;
+
uint8_t nb_valeur_socle = 0;
uint8_t socle = 1;
uint8_t pin_socle1 = 0;
@@ -58,7 +65,7 @@ uint8_t valeur_socle1 = 0;
uint8_t valeur_socle2 = 0;
uint8_t SEUIL_SOCLE = 100;
uint8_t tableau_socle[16];
-uint8_t temp = 0;
+int8_t temp = 0;
uint8_t etat_socle = 0;
void pont_init()
@@ -113,24 +120,41 @@ int main (void)
clk = 0;
TCNT1 = 350; //(65535L - ((20L*14745600L)/(1024L*1000L))); // LE PASSER EN COMPARATEUR.
- if(temp_sens != sens)
- {
- temp_sens = sens; // permet de savoir quand on a fini un tour
- }
TIMSK |= 0x04;
if(action_tourelle == 1) // activation des fonctions lié au capteur de proximité
{
- tableau_longueur[2]=tableau_longueur[1];
- tableau_longueur[1]=tableau_longueur[0];
- tableau_longueur[0]=mesurer();
- if(tableau_longueur[0] > SEUIL && tableau_longueur[1] > SEUIL && tableau_longueur[2] > SEUIL)
+ // on envoie les valeurs lorsque l'on change de sens.
+ if(temp_sens != sens)
+ {
+ temp_sens = sens; // permet de savoir quand on a fini un tour
+ proto_send1b ('t',nombre_valeur_tourelle);
+ if(nombre_valeur_tourelle > 0)
+ {
+ proto_send1b ('u',angle_tourelle[0]);
+ proto_send1w ('v',tableau_longueur_tourelle[angle_tourelle[0]]);
+ }
+ if(nombre_valeur_tourelle > 1)
+ {
+ proto_send1b ('w',angle_tourelle[1]);
+ proto_send1w ('x',tableau_longueur_tourelle[angle_tourelle[1]]);
+ }
+ nombre_valeur_tourelle = 0;
+
+ }
+
+ tableau_longueur_tourelle[2]=tableau_longueur_tourelle[1];
+ tableau_longueur_tourelle[1]=tableau_longueur_tourelle[0];
+ tableau_longueur_tourelle[0]=mesurer();
+ if(tableau_longueur_tourelle[0] > SEUIL && tableau_longueur_tourelle[1] > SEUIL && tableau_longueur_tourelle[2] > SEUIL)
{
- proto_send1w ('S',tableau_longueur[0]);
- cli ();
+ if(tableau_longueur_tourelle[1] > tableau_longueur_tourelle[0] && tableau_longueur_tourelle[1] > tableau_longueur_tourelle[2])
+ if(nombre_valeur_tourelle < 3)
+ {
+ angle_tourelle[nombre_valeur_tourelle] = delay;
+ nombre_valeur_tourelle ++;
+ }
}
- // else
- // proto_send1w ('P','0');
TournerTourelle();
}
@@ -201,8 +225,6 @@ int main (void)
etat_socle = tableau_socle[temp];
tableau_sharp[6] = etat_socle >> 3;
- // twi_update ((uint8_t *) (etat_socle >> 3));
- // // RASSEMBLER TOUS LES CAPTEURS DANS 1 TWI
}
switch(asc_message) /* Affiche les messages de retour de