programme ines avce xbee

Dependencies:   MMA8451Q mbed xbee_lib

Fork of Programme_course by Freescale_Cachan

main.cpp

Committer:
inesmas3
Date:
2017-03-17
Revision:
2:ddf9879f0e25
Parent:
1:4a9196bcf97a

File content as of revision 2:ddf9879f0e25:

#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);

DigitalOut led5(PTB18);
DigitalOut led6(PTB19);
DigitalOut led7(PTD1);

DigitalOut rst1(D3);

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;

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 KD=0;
int KI=0;
int seuil_der = 0;
int ajust_vitesse = 0;
int ajust_vit_bosse = 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);
xbee xbee1(D1,D0,D3); //Initalise xbee_lib varName(rx,tx,reset)
Serial dataXB(D1,D0);


void cycle()
{
    flag = 1;
}



void Init_car()
{
    motor_init();

    init_bary();

    //Get_pot_value();
    Get_values_Xbee();
    pc.printf("VIT=%d KD=%d KP=%d KI=%d \n", VIT,KP,KD,KI);
    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 droites pour commencer
}

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


int main() {
  
  Xbee_init();
  
     
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();
            
            Xbee_receive();
             
            //***************Traitement Image*******************
            
            T_image();
            
            //***************Gestion des Moteurs*****************
            
            angle_servo_moteur(new_bari);
            
            //*****************Gestion_bosse*********************
            
            Gestion_bosse();
            
            moteurs_arriere();

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

        }
        
    }
 




}