programme course avec menu amélioré

Dependencies:   MMA8451Q mbed

Fork of Programme_course by Freescale_Cachan

Revision:
0:3ec7fc598e48
Child:
1:000a03402c6e
--- /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();
+
+        }
+        
+    }
+} 
+
+
+
+
+