Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Programme_course_vir_am_2 by
Mlib.cpp
00001 #include "Mlib.h" 00002 00003 /***********AUTRES_FCT***************/ 00004 00005 char middle_3(char *tab) 00006 { 00007 tri_a_bulle(tab, 3); 00008 return tab[1]; 00009 } 00010 00011 int middle_3U(int *tab) 00012 { 00013 tri_a_bulleU(tab, 3); 00014 return tab[1]; 00015 } 00016 00017 float middle_3F(float *tab) 00018 { 00019 00020 return tri_a_bulleF(tab, 3); 00021 } 00022 00023 00024 void tri_a_bulle(char* t, int const size) 00025 { 00026 int en_desordre = 1; 00027 int i,j; 00028 00029 for (i = 0; (i < size) && en_desordre; ++i) 00030 { 00031 en_desordre = 0; 00032 for (j = 1; j < (size - i); ++j) 00033 { 00034 if (t[j-1] > t[j]) 00035 { 00036 int temp = t[j-1]; 00037 t[j-1] = t[j]; 00038 t[j] = temp; 00039 en_desordre = 1; 00040 } 00041 } 00042 } 00043 } 00044 void tri_a_bulleU(int* t, int const size) 00045 { 00046 int en_desordre = 1; 00047 int i,j; 00048 00049 for (i = 0; (i < size) && en_desordre; ++i) 00050 { 00051 en_desordre = 0; 00052 for (j = 1; j < (size - i); ++j) 00053 { 00054 if (t[j-1] > t[j]) 00055 { 00056 int temp = t[j-1]; 00057 t[j-1] = t[j]; 00058 t[j] = temp; 00059 en_desordre = 1; 00060 } 00061 } 00062 } 00063 } 00064 float tri_a_bulleF(float* t2, int const size) 00065 { 00066 float t[3]; 00067 t[0] = t2[0]; 00068 t[1] = t2[1]; 00069 t[2] = t2[2]; 00070 00071 00072 int en_desordre = 1; 00073 int i,j; 00074 00075 for (i = 0; (i < size) && en_desordre; ++i) 00076 { 00077 en_desordre = 0; 00078 for (j = 1; j < (size - i); ++j) 00079 { 00080 if (t[j-1] > t[j]) 00081 { 00082 float temp = t[j-1]; 00083 t[j-1] = t[j]; 00084 t[j] = temp; 00085 en_desordre = 1; 00086 } 00087 } 00088 } 00089 return t[1]; 00090 } 00091 00092 unsigned char Moyenne(unsigned char *tab) 00093 { 00094 int i = 0; 00095 int somme = 0; 00096 for(i = 0; i < 128;i++) 00097 { 00098 somme+=tab[i]; 00099 } 00100 return somme/128.0; 00101 } 00102 char Moyenne2(char *tab, int nb) 00103 { 00104 int i = 0; 00105 int somme = 0; 00106 for(i = 0; i < nb;i++) 00107 { 00108 somme+=tab[i]; 00109 } 00110 return float(somme/nb); 00111 } 00112 00113 void menu() 00114 { 00115 static int p = 0; 00116 p++; 00117 wait(0.1); 00118 if(BP2) 00119 { 00120 seuil_der++; 00121 if(seuil_der == 2) seuil_der = -1; 00122 led1 = 0; 00123 wait(0.5); 00124 } 00125 if(seuil_der == 0) 00126 { 00127 led1 = p%2; 00128 } 00129 else if(seuil_der == 1) 00130 { 00131 led1 = 1; 00132 } 00133 else 00134 { 00135 led1 = 0; 00136 } 00137 if(S1 == 1) 00138 { 00139 led2 = 1; 00140 } 00141 else led2 = 0; 00142 if(S2 == 1) 00143 { 00144 led3 = 1; 00145 } 00146 else led3= 0; 00147 } 00148 00149 void fin_course() 00150 { 00151 static int arr = 0; 00152 static char moy_inter, moy_mem_a,moy_mem_b; 00153 static char tab_mem_b[TAILLE_TAB_INT]={0,0,0}; 00154 static char tab_mem_a[TAILLE_TAB_INT]={0,0,0}; 00155 00156 if (t_debut.read_ms()>2000){ 00157 moy_inter=Moyenne2(Interval, TAILLE_TAB_INT); 00158 moy_mem_a=Moyenne2(tab_mem_a, TAILLE_TAB_INT); 00159 moy_mem_b=Moyenne2(tab_mem_b, TAILLE_TAB_INT); 00160 00161 //pc.printf("%d\n",moy_inter); 00162 if(S1&&(arr!=0)) {//delai apres l'arret 00163 if (t_debut.read_ms()-arr>200)VIT=0; 00164 } 00165 else if((moy_mem_a>20)&&(moy_mem_b>20)){ // si la voiture n'est pas trop sur l'exterieur de la piste 00166 if(S1 && (moy_inter<75) && (moy_inter>50)){ //si l'espace entre les deux lignes est plus petit que la normale (arret) 00167 00168 //for(int i=0;i<5;i++) pc.printf("%d ",Interval[i]); 00169 //pc.printf("\n"); 00170 //VIT=0; 00171 //pc.printf("\narret "); 00172 //pc.printf("\n%d ",moy_inter); 00173 led1=1; 00174 led2=1; 00175 arr=t_debut.read_ms(); 00176 00177 } 00178 } 00179 else { 00180 led1=0; 00181 led2=0; 00182 00183 } 00184 00185 } 00186 00187 for(int j = TAILLE_TAB_INT-1; j > 0; j--) 00188 { 00189 Interval[j] = Interval[j-1]; 00190 tab_mem_b[j]=tab_mem_b[j-1]; 00191 tab_mem_a[j]=tab_mem_a[j-1]; 00192 } 00193 tab_mem_b[0]=mem_b; 00194 tab_mem_a[0]=mem_a; 00195 } 00196 00197 00198 void Gestion_bosse() 00199 { 00200 if(BOSSE_ACTIVE)//Si on active la détection de la bosse 00201 { 00202 00203 //pc.printf("bosse: %d , X: %1.2f , ajustement : %hi\n ",bosse,middle_3F(last_three),ajust_vit_bosse); 00204 00205 00206 last_three[2] = last_three[1]; // les 3 dernieres valeurs de X sont stockées dans un tableau 00207 last_three[1] = last_three[0]; 00208 last_three[0] = acc.getAccX(); 00209 00210 if(bosse == 1) 00211 { 00212 ajust_vit_bosse = 60; 00213 led3=1; 00214 led4=0; 00215 00216 } 00217 else if(bosse == 3){ 00218 ajust_vit_bosse = -80; 00219 led3=0; 00220 led4=1; 00221 00222 } 00223 else 00224 { 00225 ajust_vit_bosse = 0; 00226 led3=0; 00227 led4=0; 00228 00229 } 00230 00231 if((abs(middle_3F(last_three)) > 0.13 ) && (bosse == 0)) // si montée détectée 00232 { 00233 bosse = 1; 00234 //tep = (int)t_debut.read_ms(); 00235 } 00236 else if(bosse == 1 && (middle_3F(last_three) > -0.1)) 00237 { 00238 bosse = 2; 00239 } 00240 else if(bosse == 2 && (middle_3F(last_three) > 0.19)) 00241 { 00242 bosse = 3; 00243 00244 } 00245 else if(bosse==3 && (middle_3F(last_three) > 0.19)) 00246 { 00247 ajust_vit_bosse = -50; 00248 00249 pc.printf("bosse: %d , X: %1.2f , ajustement : %hi\n",bosse,middle_3F(last_three),ajust_vit_bosse); 00250 } 00251 00252 else if (bosse==3 && (middle_3F(last_three) < 0.19)) 00253 { 00254 bosse=0; 00255 ajust_vit_bosse=0; 00256 } 00257 } 00258 } 00259 00260 00261 //void F_BalanceBlancs() 00262 //{ 00263 // unsigned char moy = 0; 00264 // moy = Moyenne(cam_data); 00265 // if(moy > LUMI_MOYENNE && tempsInte >= MIN_INTE) tempsInte-=INCREM_BALANCE; 00266 // else if(tempsInte <= MAX_INTE) tempsInte+=INCREM_BALANCE; 00267 //} 00268 00269 00270
Generated on Tue Jul 12 2022 16:20:09 by
1.7.2
