Programme course fonctionnel Jour J Croisement non pris en charge (tourne en rond)
Fork of Programme_course_30Tr by
main.cpp
- Committer:
- leandre
- Date:
- 2017-03-22
- Revision:
- 4:8b0215ec788f
- Parent:
- 2:a37de5eb8bf3
File content as of revision 4:8b0215ec788f:
#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; char Interval[TAILLE_TAB_INT]; char mem_a; char mem_b; int ajust_vit_bosse; int ajust_vit_vir; 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 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 } void arret() { led1=0; led2=0; led3=0; led4=0; PWM_motor(MOTEUR_A, 0);//arret des moteurs PWM_motor(MOTEUR_B, 0); angle_servo_moteur(0);//roues droites //ici while(BP1); while(!BP1){ //ici menu(); } while(BP1); Init_car(); //permet de changer la vitesse avec le pot //ici led1=0; led2=0; led3=0; led4=0; t_debut.reset(); } int main() { Init_car(); while(!BP1)//tant que l'on appuie pas sur BP1 { menu(); } while(BP1);//on attends le relachement de BP1 led1=0; led2=0; led3=0; led4=0; /***************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(); if(VIT==0) arret(); } } }