Freescale_Cachan / Mbed 2 deprecated Programme_course_base

Dependencies:   MMA8451Q mbed xbee_lib

Fork of Programme_course by Freescale_Cachan

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "Mlib.h"
00002 
00003 
00004 
00005 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADRESS);
00006 DigitalOut activate_motor (PTE21);
00007 DigitalOut led1(PTB8);
00008 DigitalOut led2(PTB9);
00009 DigitalOut led3(PTB10);
00010 DigitalOut led4(PTB11);
00011 
00012 DigitalOut led5(PTB18);
00013 DigitalOut led6(PTB19);
00014 DigitalOut led7(PTD1);
00015 
00016 DigitalOut rst1(D3);
00017 
00018 AnalogIn pot1 (PTB3);
00019 AnalogIn pot2 (PTB2);
00020 
00021 DigitalIn S1(PTE2);
00022 DigitalIn S2(PTE3);
00023 DigitalIn S3(PTE4);
00024 DigitalIn S4(PTE5);
00025 Timer t_ligne;
00026 Timer timer;
00027 int ralentire = 0;
00028 
00029 int tempsInte = MAX_INTE;
00030 unsigned char cam_data[128];
00031 int baricentre = 0;
00032 int begin = 0;
00033 char flag = 0;
00034 char clk_active = 0;
00035 char bosse = 0; 
00036 int bary_tab[3];
00037 int bary_tab_bis[3];
00038 char last_five[5];
00039 float last_three[3];
00040 Timer t_debut;
00041 int somme_derivee = 0;
00042 int VIT = 0;
00043 int KP = 80;
00044 int KD=0;
00045 int KI=0;
00046 int seuil_der = 0;
00047 int ajust_vitesse = 0;
00048 int ajust_vit_bosse = 0;
00049 int new_bari = 0;
00050 int vitesse_virage = 0;
00051 int ligne_droite = 0;
00052 int integral;
00053 
00054 
00055 DigitalOut BP1(PTC13);//boutton A
00056 DigitalOut BP2(PTC17);//boutton B
00057 DigitalOut SI(PTD7);
00058 DigitalIn CLK_IN(PTE31);
00059 DigitalOut CLK(PTE1);
00060 AnalogIn AIN(PTD5);
00061 
00062 Ticker t_cyc; 
00063 Ticker t_clk;
00064 Ticker t_finInte;
00065 
00066 Serial pc(USBTX, USBRX);
00067 xbee xbee1(D1,D0,D3); //Initalise xbee_lib varName(rx,tx,reset)
00068 Serial dataXB(D1,D0);
00069 
00070 
00071 void cycle()
00072 {
00073     flag = 1;
00074 }
00075 
00076 
00077 
00078 void Init_car()
00079 {
00080     motor_init();
00081 
00082     init_bary();
00083 
00084     //Get_pot_value();
00085     Get_values_Xbee();
00086     pc.printf("VIT=%d KD=%d KP=%d KI=%d \n", VIT,KP,KD,KI);
00087     t_cyc.attach_us(&cycle, FRQ_CYC);//interruption cycle
00088     
00089     clk_active = 0;//L'horloge est désactivée
00090     t_clk.attach(&F_CLK, 1/(2.0*FRQ_CLK));//interruption horloge
00091     
00092     timer.start();
00093 
00094    angle_servo_moteur(0);//on met les roues droites pour commencer
00095 }
00096 
00097 void arret()
00098 {
00099     PWM_motor(MOTEUR_A, 0);
00100     PWM_motor(MOTEUR_B, 0);
00101     while(BP1);
00102     while(!BP1){menu();};
00103     while(BP1);
00104     Init_car();
00105     t_debut.reset();
00106 }
00107 
00108 
00109 int main() {
00110   
00111   Xbee_init();
00112   
00113      
00114 Init_car();
00115    
00116     
00117     
00118     while(!BP1)//tant que l'on appuie pas sur BP1
00119     {
00120         menu();
00121         
00122     }
00123     while(BP1);//on attends le relachement de BP1
00124 
00125 //***************Début de la course***************   
00126 
00127     t_debut.start();//Timer du début de la course
00128     t_ligne.start();
00129     
00130 
00131 //************************************************
00132    
00133 //*********On demarre les moteurs****************
00134     PWM_motor(MOTEUR_A, VIT);
00135     PWM_motor(MOTEUR_B, VIT);
00136     
00137     while(1) {//boucle principale
00138     
00139         
00140         if(BP1)
00141         {
00142             arret();
00143             
00144         }
00145         if(flag == 1)//début du cycle
00146         {
00147             flag = 0;
00148 
00149             //**************Récupération données*****************
00150             
00151             F_GetData();
00152             
00153             Xbee_receive();
00154              
00155             //***************Traitement Image*******************
00156             
00157             T_image();
00158             
00159             //***************Gestion des Moteurs*****************
00160             
00161             angle_servo_moteur(new_bari);
00162             
00163             //*****************Gestion_bosse*********************
00164             
00165             Gestion_bosse();
00166             
00167             moteurs_arriere();
00168 
00169             //***************Balance des blancs******************
00170             
00171             F_BalanceBlancs();
00172             
00173             
00174             //***************Detection_arrivee*******************
00175             
00176             fin_course();
00177 
00178         }
00179         
00180     }
00181  
00182 
00183 
00184 
00185 
00186 }