Freescale_Cachan
/
Programme_course_2
programme course avec menu amélioré
Fork of Programme_course by
Diff: main.cpp
- Revision:
- 0:3ec7fc598e48
- Child:
- 1:000a03402c6e
diff -r 000000000000 -r 3ec7fc598e48 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jan 26 07:37:45 2017 +0000 @@ -0,0 +1,168 @@ +#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(); + + } + + } +} + + + + +