Programme course fonctionnel Jour J Croisement non pris en charge (tourne en rond)

Dependencies:   MMA8451Q mbed

Fork of Programme_course_30Tr by Freescale_Cachan

Committer:
leandre
Date:
Wed Mar 22 14:41:20 2017 +0000
Revision:
4:8b0215ec788f
Parent:
2:a37de5eb8bf3
30 tours

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leandre 2:a37de5eb8bf3 1
leandre 2:a37de5eb8bf3 2
Freescale_cup 0:3ec7fc598e48 3 #include "Mlib.h"
Freescale_cup 0:3ec7fc598e48 4
Freescale_cup 0:3ec7fc598e48 5
Freescale_cup 0:3ec7fc598e48 6
Freescale_cup 0:3ec7fc598e48 7 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADRESS);
Freescale_cup 0:3ec7fc598e48 8 DigitalOut activate_motor (PTE21);
Freescale_cup 0:3ec7fc598e48 9 DigitalOut led1(PTB8);
Freescale_cup 0:3ec7fc598e48 10 DigitalOut led2(PTB9);
Freescale_cup 0:3ec7fc598e48 11 DigitalOut led3(PTB10);
Freescale_cup 0:3ec7fc598e48 12 DigitalOut led4(PTB11);
Freescale_cup 0:3ec7fc598e48 13
leandre 2:a37de5eb8bf3 14
Freescale_cup 0:3ec7fc598e48 15 AnalogIn pot1 (PTB3);
Freescale_cup 0:3ec7fc598e48 16 AnalogIn pot2 (PTB2);
Freescale_cup 0:3ec7fc598e48 17
Freescale_cup 0:3ec7fc598e48 18 DigitalIn S1(PTE2);
Freescale_cup 0:3ec7fc598e48 19 DigitalIn S2(PTE3);
Freescale_cup 0:3ec7fc598e48 20 DigitalIn S3(PTE4);
Freescale_cup 0:3ec7fc598e48 21 DigitalIn S4(PTE5);
Freescale_cup 0:3ec7fc598e48 22 Timer t_ligne;
Freescale_cup 0:3ec7fc598e48 23 Timer timer;
Freescale_cup 0:3ec7fc598e48 24 int ralentire = 0;
Freescale_cup 0:3ec7fc598e48 25
Freescale_cup 0:3ec7fc598e48 26 /*
Freescale_cup 0:3ec7fc598e48 27 AnalogIn pot1 (PTB3);
Freescale_cup 0:3ec7fc598e48 28 AnalogIn pot2 (PTB2);
Freescale_cup 0:3ec7fc598e48 29
Freescale_cup 0:3ec7fc598e48 30 printf("%f", pot1.read());
Freescale_cup 0:3ec7fc598e48 31 */
Freescale_cup 0:3ec7fc598e48 32
Freescale_cup 0:3ec7fc598e48 33 int tempsInte = MAX_INTE;
Freescale_cup 0:3ec7fc598e48 34 unsigned char cam_data[128];
Freescale_cup 0:3ec7fc598e48 35 int baricentre = 0;
Freescale_cup 0:3ec7fc598e48 36 int begin = 0;
Freescale_cup 0:3ec7fc598e48 37 char flag = 0;
Freescale_cup 0:3ec7fc598e48 38 char clk_active = 0;
Freescale_cup 0:3ec7fc598e48 39 char bosse = 0;
Freescale_cup 0:3ec7fc598e48 40 int bary_tab[3];
Freescale_cup 0:3ec7fc598e48 41 int bary_tab_bis[3];
Freescale_cup 0:3ec7fc598e48 42 char last_five[5];
Freescale_cup 0:3ec7fc598e48 43 float last_three[3];
Freescale_cup 0:3ec7fc598e48 44 Timer t_debut;
Freescale_cup 0:3ec7fc598e48 45 int somme_derivee = 0;
Freescale_cup 0:3ec7fc598e48 46 int VIT = 0;
Freescale_cup 0:3ec7fc598e48 47 int KP = 80;
Freescale_cup 0:3ec7fc598e48 48 int seuil_der = 0;
Freescale_cup 0:3ec7fc598e48 49 int ajust_vitesse = 0;
Freescale_cup 0:3ec7fc598e48 50 int new_bari = 0;
Freescale_cup 0:3ec7fc598e48 51 int vitesse_virage = 0;
Freescale_cup 0:3ec7fc598e48 52 int ligne_droite = 0;
Freescale_cup 0:3ec7fc598e48 53 int integral;
leandre 2:a37de5eb8bf3 54 char Interval[TAILLE_TAB_INT];
leandre 2:a37de5eb8bf3 55 char mem_a;
leandre 2:a37de5eb8bf3 56 char mem_b;
leandre 4:8b0215ec788f 57 int ajust_vit_bosse;
leandre 4:8b0215ec788f 58 int ajust_vit_vir;
Freescale_cup 0:3ec7fc598e48 59
Freescale_cup 0:3ec7fc598e48 60
Freescale_cup 0:3ec7fc598e48 61 DigitalOut BP1(PTC13);//boutton A
Freescale_cup 0:3ec7fc598e48 62 DigitalOut BP2(PTC17);//boutton B
Freescale_cup 0:3ec7fc598e48 63 DigitalOut SI(PTD7);
Freescale_cup 0:3ec7fc598e48 64 DigitalIn CLK_IN(PTE31);
Freescale_cup 0:3ec7fc598e48 65 DigitalOut CLK(PTE1);
Freescale_cup 0:3ec7fc598e48 66 AnalogIn AIN(PTD5);
Freescale_cup 0:3ec7fc598e48 67
Freescale_cup 0:3ec7fc598e48 68 Ticker t_cyc;
Freescale_cup 0:3ec7fc598e48 69 Ticker t_clk;
Freescale_cup 0:3ec7fc598e48 70 Ticker t_finInte;
Freescale_cup 0:3ec7fc598e48 71
Freescale_cup 0:3ec7fc598e48 72 Serial pc(USBTX, USBRX);
Freescale_cup 0:3ec7fc598e48 73
Freescale_cup 0:3ec7fc598e48 74
Freescale_cup 0:3ec7fc598e48 75 void cycle()
Freescale_cup 0:3ec7fc598e48 76 {
Freescale_cup 0:3ec7fc598e48 77 flag = 1;
Freescale_cup 0:3ec7fc598e48 78 }
Freescale_cup 0:3ec7fc598e48 79
leandre 1:000a03402c6e 80
Freescale_cup 0:3ec7fc598e48 81
Freescale_cup 0:3ec7fc598e48 82
Freescale_cup 0:3ec7fc598e48 83
Freescale_cup 0:3ec7fc598e48 84
Freescale_cup 0:3ec7fc598e48 85 void Init_car()
Freescale_cup 0:3ec7fc598e48 86 {
Freescale_cup 0:3ec7fc598e48 87 motor_init();
Freescale_cup 0:3ec7fc598e48 88
Freescale_cup 0:3ec7fc598e48 89 init_bary();
Freescale_cup 0:3ec7fc598e48 90
Freescale_cup 0:3ec7fc598e48 91 Get_pot_value();
Freescale_cup 0:3ec7fc598e48 92
Freescale_cup 0:3ec7fc598e48 93 t_cyc.attach_us(&cycle, FRQ_CYC);//interruption cycle
Freescale_cup 0:3ec7fc598e48 94
Freescale_cup 0:3ec7fc598e48 95 clk_active = 0;//L'horloge est désactivée
Freescale_cup 0:3ec7fc598e48 96 t_clk.attach(&F_CLK, 1/(2.0*FRQ_CLK));//interruption horloge
Freescale_cup 0:3ec7fc598e48 97
leandre 1:000a03402c6e 98
leandre 1:000a03402c6e 99
Freescale_cup 0:3ec7fc598e48 100 timer.start();
Freescale_cup 0:3ec7fc598e48 101
leandre 1:000a03402c6e 102 angle_servo_moteur(0);//on met les roues droite pour commencer
leandre 1:000a03402c6e 103 }
leandre 1:000a03402c6e 104
leandre 1:000a03402c6e 105 void arret()
leandre 1:000a03402c6e 106 {
leandre 4:8b0215ec788f 107 led1=0;
leandre 4:8b0215ec788f 108 led2=0;
leandre 4:8b0215ec788f 109 led3=0;
leandre 4:8b0215ec788f 110 led4=0;
leandre 1:000a03402c6e 111 PWM_motor(MOTEUR_A, 0);//arret des moteurs
leandre 1:000a03402c6e 112 PWM_motor(MOTEUR_B, 0);
leandre 1:000a03402c6e 113 angle_servo_moteur(0);//roues droites //ici
leandre 1:000a03402c6e 114 while(BP1);
leandre 1:000a03402c6e 115 while(!BP1){ //ici
leandre 1:000a03402c6e 116 menu();
leandre 1:000a03402c6e 117 }
leandre 1:000a03402c6e 118 while(BP1);
leandre 1:000a03402c6e 119 Init_car(); //permet de changer la vitesse avec le pot //ici
leandre 4:8b0215ec788f 120 led1=0;
leandre 4:8b0215ec788f 121 led2=0;
leandre 4:8b0215ec788f 122 led3=0;
leandre 4:8b0215ec788f 123 led4=0;
leandre 1:000a03402c6e 124 t_debut.reset();
Freescale_cup 0:3ec7fc598e48 125 }
Freescale_cup 0:3ec7fc598e48 126
Freescale_cup 0:3ec7fc598e48 127 int main() {
leandre 1:000a03402c6e 128 Init_car();
Freescale_cup 0:3ec7fc598e48 129
Freescale_cup 0:3ec7fc598e48 130
Freescale_cup 0:3ec7fc598e48 131 while(!BP1)//tant que l'on appuie pas sur BP1
Freescale_cup 0:3ec7fc598e48 132 {
Freescale_cup 0:3ec7fc598e48 133 menu();
Freescale_cup 0:3ec7fc598e48 134 }
Freescale_cup 0:3ec7fc598e48 135 while(BP1);//on attends le relachement de BP1
leandre 4:8b0215ec788f 136 led1=0;
leandre 4:8b0215ec788f 137 led2=0;
leandre 4:8b0215ec788f 138 led3=0;
leandre 4:8b0215ec788f 139 led4=0;
leandre 1:000a03402c6e 140
Freescale_cup 0:3ec7fc598e48 141 /***************Début de la course***************/
Freescale_cup 0:3ec7fc598e48 142
Freescale_cup 0:3ec7fc598e48 143 t_debut.start();//Timer du début de la course
Freescale_cup 0:3ec7fc598e48 144 t_ligne.start();
Freescale_cup 0:3ec7fc598e48 145
leandre 1:000a03402c6e 146
Freescale_cup 0:3ec7fc598e48 147
Freescale_cup 0:3ec7fc598e48 148 /************************************************/
Freescale_cup 0:3ec7fc598e48 149
Freescale_cup 0:3ec7fc598e48 150 /**********On demarre les moteurs****************/
Freescale_cup 0:3ec7fc598e48 151 PWM_motor(MOTEUR_A, VIT);
Freescale_cup 0:3ec7fc598e48 152 PWM_motor(MOTEUR_B, VIT);
Freescale_cup 0:3ec7fc598e48 153
Freescale_cup 0:3ec7fc598e48 154 while(1) {//boucle principale
Freescale_cup 0:3ec7fc598e48 155 if(BP1)
Freescale_cup 0:3ec7fc598e48 156 {
Freescale_cup 0:3ec7fc598e48 157 arret();
Freescale_cup 0:3ec7fc598e48 158 }
Freescale_cup 0:3ec7fc598e48 159 if(flag == 1)//début du cycle
Freescale_cup 0:3ec7fc598e48 160 {
Freescale_cup 0:3ec7fc598e48 161 flag = 0;
Freescale_cup 0:3ec7fc598e48 162
Freescale_cup 0:3ec7fc598e48 163 /***************Récupération données*****************/
Freescale_cup 0:3ec7fc598e48 164
Freescale_cup 0:3ec7fc598e48 165 F_GetData();
Freescale_cup 0:3ec7fc598e48 166
Freescale_cup 0:3ec7fc598e48 167 /*****************Traitement Image*******************/
Freescale_cup 0:3ec7fc598e48 168
Freescale_cup 0:3ec7fc598e48 169 T_image();
Freescale_cup 0:3ec7fc598e48 170
Freescale_cup 0:3ec7fc598e48 171 /****************Gestion des Moteurs*****************/
Freescale_cup 0:3ec7fc598e48 172
Freescale_cup 0:3ec7fc598e48 173 angle_servo_moteur(new_bari);
Freescale_cup 0:3ec7fc598e48 174
Freescale_cup 0:3ec7fc598e48 175 moteurs_arriere();
Freescale_cup 0:3ec7fc598e48 176
Freescale_cup 0:3ec7fc598e48 177 /****************Balance des blancs******************/
Freescale_cup 0:3ec7fc598e48 178
Freescale_cup 0:3ec7fc598e48 179 F_BalanceBlancs();
Freescale_cup 0:3ec7fc598e48 180
Freescale_cup 0:3ec7fc598e48 181 /******************Gestion_bosse*********************/
Freescale_cup 0:3ec7fc598e48 182
Freescale_cup 0:3ec7fc598e48 183 Gestion_bosse();
Freescale_cup 0:3ec7fc598e48 184
Freescale_cup 0:3ec7fc598e48 185 /****************Detection_arrivee*******************/
Freescale_cup 0:3ec7fc598e48 186
Freescale_cup 0:3ec7fc598e48 187 fin_course();
leandre 2:a37de5eb8bf3 188 if(VIT==0) arret();
leandre 1:000a03402c6e 189
Freescale_cup 0:3ec7fc598e48 190
Freescale_cup 0:3ec7fc598e48 191 }
Freescale_cup 0:3ec7fc598e48 192
Freescale_cup 0:3ec7fc598e48 193 }
Freescale_cup 0:3ec7fc598e48 194 }
Freescale_cup 0:3ec7fc598e48 195
Freescale_cup 0:3ec7fc598e48 196
Freescale_cup 0:3ec7fc598e48 197
Freescale_cup 0:3ec7fc598e48 198
Freescale_cup 0:3ec7fc598e48 199