Gestion des deux rapports de réduction
This commit is contained in:
		
							parent
							
								
									4ea2daaef9
								
							
						
					
					
						commit
						31336389fc
					
				
							
								
								
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							| @ -8,6 +8,7 @@ | ||||
|         "vl53l8_2024.h": "c", | ||||
|         "trajet.h": "c", | ||||
|         "trajectoire.h": "c", | ||||
|         "compare": "c" | ||||
|         "compare": "c", | ||||
|         "asser_position.h": "c" | ||||
|     } | ||||
| } | ||||
| @ -8,8 +8,8 @@ | ||||
| float consigne_mm_s[3]; // Consigne de vitesse (en mm/s)
 | ||||
| float commande_I[3]; // Terme integral
 | ||||
| 
 | ||||
| void AsserMoteur_Init(){ | ||||
|     QEI_init(); | ||||
| void AsserMoteur_Init(int id){ | ||||
|     QEI_init(id); | ||||
|     Moteur_Init(); | ||||
|     for(unsigned int i =0; i< 2; i ++){ | ||||
|         commande_I[i]=0; | ||||
|  | ||||
| @ -5,4 +5,4 @@ void AsserMoteur_setConsigne_mm_s(enum t_moteur moteur, float consigne_mm_s); | ||||
| float AsserMoteur_getConsigne_mm_s(enum t_moteur moteur); | ||||
| float AsserMoteur_getVitesse_mm_s(enum t_moteur moteur, int step_ms); | ||||
| void AsserMoteur_Gestion(int step_ms); | ||||
| void AsserMoteur_Init(); | ||||
| void AsserMoteur_Init(int); | ||||
| @ -6,9 +6,9 @@ | ||||
| 
 | ||||
| struct position_t position; | ||||
| 
 | ||||
| void Localisation_init(){ | ||||
| void Localisation_init(int id){ | ||||
|     Temps_init(); | ||||
|     QEI_init(); | ||||
|     QEI_init(id); | ||||
|     position.x_mm = 0; | ||||
|     position.y_mm = 0; | ||||
|     position.angle_radian = 0; | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
| 
 | ||||
| struct position_t Localisation_get(void); | ||||
| void Localisation_gestion(); | ||||
| void Localisation_init(); | ||||
| void Localisation_init(int); | ||||
| 
 | ||||
| void Localisation_set(float x_mm, float y_mm, float angle_radian); | ||||
| void Localisation_set_x(float x_mm); | ||||
|  | ||||
							
								
								
									
										12
									
								
								QEI.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								QEI.c
									
									
									
									
									
								
							| @ -17,8 +17,10 @@ | ||||
| // Nombre d'impulsions par tour de roue : 8000
 | ||||
| // Impulsion / mm : 42,44
 | ||||
| 
 | ||||
| #define IMPULSION_PAR_MM (12.45f) | ||||
| #define IMPULSION_PAR_MM_50_1 (12.45f) | ||||
| #define IMPULSION_PAR_MM_30_1 (7.47f) | ||||
| 
 | ||||
| float impulsion_par_mm; | ||||
| 
 | ||||
| 
 | ||||
| struct QEI_t QEI_A, QEI_B; | ||||
| @ -28,7 +30,7 @@ bool QEI_est_init = false; | ||||
| PIO pio_QEI = pio0; | ||||
| 
 | ||||
| 
 | ||||
| void QEI_init(){ | ||||
| void QEI_init(int identifiant){ | ||||
|     // Initialisation des 3 modules QEI
 | ||||
|     // Chaque module QEI sera dans une machine à état du PIO 0
 | ||||
|     if(!QEI_est_init){ | ||||
| @ -48,6 +50,10 @@ void QEI_init(){ | ||||
|         QEI_B.value=0; | ||||
|         QEI_est_init=true; | ||||
|     } | ||||
|     impulsion_par_mm = IMPULSION_PAR_MM_50_1; | ||||
|     if(identifiant == 0 || identifiant >= 4){ | ||||
|         impulsion_par_mm = IMPULSION_PAR_MM_30_1; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| @ -91,5 +97,5 @@ int QEI_get(enum QEI_name_t qei){ | ||||
| /// @param  qei : Nom du module à lire (QEI_A_NAME, QEI_B_NAME ou QEI_C_NAME)
 | ||||
| /// @return la distance parcourue en mm calculée lors du dernier appel de la function QEI_Update()
 | ||||
| float QEI_get_mm(enum QEI_name_t qei){ | ||||
|     return ((float) QEI_get(qei)) / (float)IMPULSION_PAR_MM; | ||||
|     return ((float) QEI_get(qei)) / impulsion_par_mm; | ||||
| } | ||||
							
								
								
									
										2
									
								
								QEI.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								QEI.h
									
									
									
									
									
								
							| @ -11,6 +11,6 @@ enum QEI_name_t{ | ||||
| extern struct QEI_t QEI_A, QEI_B, QEI_C; | ||||
| 
 | ||||
| void QEI_update(void); | ||||
| void QEI_init(void); | ||||
| void QEI_init(int); | ||||
| int QEI_get(enum QEI_name_t qei); | ||||
| float QEI_get_mm(enum QEI_name_t qei); | ||||
							
								
								
									
										4
									
								
								Trajet.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Trajet.c
									
									
									
									
									
								
							| @ -25,9 +25,9 @@ const float distance_pas_obstacle = 2000; | ||||
| float vitesse_max_contrainte_obstacle; | ||||
| 
 | ||||
| /// @brief Initialise le module Trajet. A appeler en phase d'initilisation
 | ||||
| void Trajet_init(){ | ||||
| void Trajet_init(int id){ | ||||
|     Temps_init(); | ||||
|     AsserMoteur_Init(); | ||||
|     AsserMoteur_Init(id); | ||||
|     abscisse = 0; | ||||
|     vitesse_mm_s = 0; | ||||
|     position_mm = 0; | ||||
|  | ||||
							
								
								
									
										2
									
								
								Trajet.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Trajet.h
									
									
									
									
									
								
							| @ -20,7 +20,7 @@ enum etat_trajet_t{ | ||||
| 
 | ||||
| extern const float distance_pas_obstacle; | ||||
| 
 | ||||
| void Trajet_init(); | ||||
| void Trajet_init(int); | ||||
| void Trajet_config(float _vitesse_max_trajet_mm_s, float _acceleration_mm_ss); | ||||
| void Trajet_debut_trajectoire(struct trajectoire_t trajectoire); | ||||
| enum etat_trajet_t Trajet_avance(float temps_s); | ||||
|  | ||||
							
								
								
									
										12
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								main.c
									
									
									
									
									
								
							| @ -63,8 +63,8 @@ void main(void) | ||||
| 	Temps_init(); | ||||
| 	//tension_batterie_init();
 | ||||
| 	identifiant_init(); | ||||
| 	Localisation_init(); | ||||
| 	Trajet_init(); | ||||
| 	Localisation_init(identifiant_lire()); | ||||
| 	Trajet_init(identifiant_lire()); | ||||
| 	i2c_maitre_init(); | ||||
| 
 | ||||
| 	 | ||||
| @ -97,7 +97,7 @@ void main(void) | ||||
| 
 | ||||
| 	while(get_tirette()); | ||||
| 
 | ||||
| 	sleep_ms(90000); | ||||
| 	//sleep_ms(90000);
 | ||||
| 
 | ||||
| 	temps_depart_ms = Temps_get_temps_ms(); | ||||
| 
 | ||||
| @ -234,6 +234,9 @@ void configure_trajet(int identifiant, int couleur){ | ||||
| 			switch (identifiant) | ||||
| 			{ | ||||
| 				case 0: | ||||
| 					Localisation_set(3000-1249, 2000-63, 0); | ||||
| 					Trajectoire_bezier(&trajectoire, 3000-1250, 2000-63, 3000-1050, 2000-63,  | ||||
| 					3000-750, 1400, 3000-750, 2100, 0, 0); | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					Localisation_set(3000-1249, 2000-63, 0); | ||||
| @ -268,6 +271,9 @@ void configure_trajet(int identifiant, int couleur){ | ||||
| 			switch (identifiant) | ||||
| 			{ | ||||
| 				case 0: | ||||
| 					Localisation_set(1249, 2000-63, M_PI); | ||||
| 					Trajectoire_bezier(&trajectoire, 1250, 2000-63, 1050, 2000-63,  | ||||
| 					750, 1400, 750, 2100, M_PI, M_PI); | ||||
| 					break; | ||||
| 				case 1: | ||||
| 					Localisation_set(1249, 2000-63, M_PI); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user