Freescale_Cachan / Mbed 2 deprecated Programme_course_30Tr

Dependencies:   MMA8451Q mbed

Fork of Programme_course_vir_am_2 by Freescale_Cachan

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

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