programme ines avce xbee

Dependencies:   MMA8451Q mbed xbee_lib

Fork of Programme_course by Freescale_Cachan

main.cpp

Committer:
Freescale_cup
Date:
2017-01-26
Revision:
0:3ec7fc598e48
Child:
1:4a9196bcf97a

File content as of revision 0:3ec7fc598e48:

#include "Mlib.h"



MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADRESS);
DigitalOut activate_motor (PTE21);
DigitalOut led1(PTB8);
DigitalOut led2(PTB9);
DigitalOut led3(PTB10);
DigitalOut led4(PTB11);

AnalogIn pot1 (PTB3);
AnalogIn pot2 (PTB2);

DigitalIn S1(PTE2);
DigitalIn S2(PTE3);
DigitalIn S3(PTE4);
DigitalIn S4(PTE5);
Timer t_ligne;
Timer timer;
int ralentire = 0;

/*
AnalogIn pot1 (PTB3);
AnalogIn pot2 (PTB2);

printf("%f", pot1.read());
*/

int tempsInte = MAX_INTE;
unsigned char cam_data[128];
int baricentre = 0;
int begin = 0;
char flag = 0;
char clk_active = 0;
char bosse = 0; 
int bary_tab[3];
int bary_tab_bis[3];
char last_five[5];
float last_three[3];
Timer t_debut;
int somme_derivee = 0;
int VIT = 0;
int KP = 80;
int seuil_der = 0;
int ajust_vitesse = 0;
int new_bari = 0;
int vitesse_virage = 0;
int ligne_droite = 0;
int integral;


DigitalOut BP1(PTC13);//boutton A
DigitalOut BP2(PTC17);//boutton B
DigitalOut SI(PTD7);
DigitalIn CLK_IN(PTE31);
DigitalOut CLK(PTE1);
AnalogIn AIN(PTD5);

Ticker t_cyc; 
Ticker t_clk;
Ticker t_finInte;

Serial pc(USBTX, USBRX);


void cycle()
{
    flag = 1;
}

void arret()
{
    PWM_motor(MOTEUR_A, 0);
    PWM_motor(MOTEUR_B, 0);
    while(BP1);
    while(!BP1);
    while(BP1);
    t_debut.reset();
}




void Init_car()
{
    motor_init();

    init_bary();

    Get_pot_value();
    
    t_cyc.attach_us(&cycle, FRQ_CYC);//interruption cycle
    
    clk_active = 0;//L'horloge est désactivée
    t_clk.attach(&F_CLK, 1/(2.0*FRQ_CLK));//interruption horloge
    
    timer.start();

   angle_servo_moteur(0);//on met les roues droite pour commencer
}

int main() {
    
    Init_car();
    
    while(!BP1)//tant que l'on appuie pas sur BP1
    {
        menu();
    }
    while(BP1);//on attends le relachement de BP1

/***************Début de la course***************/   

    t_debut.start();//Timer du début de la course
    t_ligne.start();
    

/************************************************/ 
   
/**********On demarre les moteurs****************/
    PWM_motor(MOTEUR_A, VIT);
    PWM_motor(MOTEUR_B, VIT);
    
    while(1) {//boucle principale
        if(BP1)
        {
            arret();
        }
        if(flag == 1)//début du cycle
        {
            flag = 0;

            /***************Récupération données*****************/
            
            F_GetData();
            
            /*****************Traitement Image*******************/
            
            T_image();
            
            /****************Gestion des Moteurs*****************/
            
            angle_servo_moteur(new_bari);
            
            moteurs_arriere();

            /****************Balance des blancs******************/
            
            F_BalanceBlancs();
            
            /******************Gestion_bosse*********************/
            
            Gestion_bosse();
            
            /****************Detection_arrivee*******************/
            
            fin_course();

        }
        
    }
}