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.c90
1 files changed, 64 insertions, 26 deletions
diff --git a/n/es/src/main.c b/n/es/src/main.c
index 35feb5f..2c31122 100644
--- a/n/es/src/main.c
+++ b/n/es/src/main.c
@@ -28,6 +28,7 @@
#include "avr/interrupt.h"
#include "avr/io.h"
#include <stdint.h>
+#include "ascenseur.h"
/* +AutoDec */
/* -AutoDec */
@@ -36,11 +37,16 @@ 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
+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 SEUIL = 0x01AF;
+uint16_t SEUIL = 0x0100;
uint8_t mesure = 0;
+uint8_t ascenseur = 0;
+uint8_t pont;
+uint8_t vitesse_ascenseur=0;
+uint8_t commande = 0;
int main (void)
{
@@ -55,8 +61,8 @@ int main (void)
twi_init (0x02);
tourelle_init (prescaler);
adc_init ();
-
-
+ ascenseur = 1;
+ pont = 1;
sei (); // on met les interruptions
@@ -66,36 +72,68 @@ int main (void)
while(1) // boucle principale
{
- if(etat == 1)
+ if(clk == 1)
{
- etat = 0;
- TCNT1 = 115; //(65535L - ((20L*14745600L)/(1024L*1000L))); // LE PASSER EN COMPARATEUR.
+ clk = 0;
+ TCNT1 = 350; //(65535L - ((20L*14745600L)/(1024L*1000L))); // LE PASSER EN COMPARATEUR.
if(temp_sens != sens)
{
- temp_sens = sens;
-// if(continu == 1) renvoi_RS232(); // nom de la fonction qui renvoie la valeur
+ temp_sens = sens; // permet de savoir quand on a fini un tour
}
-// if(buffer_serie != 0) callback_RS232();
TIMSK |= 0x04;
+ if(mesure == 1)
+ {
+ 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)
+ {
+ proto_send1w ('S',tableau_longueur[0]);
+ cli ();
+ }
+// else
+// proto_send1w ('P','0');
+ TournerTourelle();
+ }
+ if(pont == 1)
+ {
+ for(compteur=0;compteur<3;compteur++)
+ {
+ adc_start (compteur); // pin selectionnee
+ while(!adc_checkf()){}
+ tableau_sharp[compteur]=adc_read();
+
+ twi_update (tableau_sharp,6); // renoie des valeurs sur le I2C
+ }
+ }
+ if(ascenseur == 1)
+ {
+ if(commande == MONTE)
+ {
+ if(capteur_haut())
+ {
+ asc_haut(vitesse_ascenseur - 10);
+ }
+ else asc_haut(vitesse_ascenseur + 2);
+ }
+ else
+ {
+ if(commande == DESCEND)
+ {
+ if(capteur_bas())
+ {
+ asc_bas(vitesse_ascenseur - 10);
+ }
+
+ else asc_bas(vitesse_ascenseur + 2);
+
+ }
+ else asc_stable(vitesse_ascenseur);
+
+ }
+ }
}
-
- if(mesure == 1)
- {
- tableau_longueur[0]=mesurer();
- if(tableau_longueur[0] > SEUIL)
- proto_send1w ('S',tableau_longueur[0]);
-// else
-// proto_send1w ('P',tableau_longueur[0]);
- }
-
- for(compteur=0;compteur<3;compteur++)
- {
- adc_start (compteur); // pin selectionnee
- while(!adc_checkf()){}
- tableau_sharp[compteur]=adc_read();
- }
-twi_update (tableau_sharp,6);
}
}