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",
|
"vl53l8_2024.h": "c",
|
||||||
"trajet.h": "c",
|
"trajet.h": "c",
|
||||||
"trajectoire.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 consigne_mm_s[3]; // Consigne de vitesse (en mm/s)
|
||||||
float commande_I[3]; // Terme integral
|
float commande_I[3]; // Terme integral
|
||||||
|
|
||||||
void AsserMoteur_Init(){
|
void AsserMoteur_Init(int id){
|
||||||
QEI_init();
|
QEI_init(id);
|
||||||
Moteur_Init();
|
Moteur_Init();
|
||||||
for(unsigned int i =0; i< 2; i ++){
|
for(unsigned int i =0; i< 2; i ++){
|
||||||
commande_I[i]=0;
|
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_getConsigne_mm_s(enum t_moteur moteur);
|
||||||
float AsserMoteur_getVitesse_mm_s(enum t_moteur moteur, int step_ms);
|
float AsserMoteur_getVitesse_mm_s(enum t_moteur moteur, int step_ms);
|
||||||
void AsserMoteur_Gestion(int step_ms);
|
void AsserMoteur_Gestion(int step_ms);
|
||||||
void AsserMoteur_Init();
|
void AsserMoteur_Init(int);
|
@ -6,9 +6,9 @@
|
|||||||
|
|
||||||
struct position_t position;
|
struct position_t position;
|
||||||
|
|
||||||
void Localisation_init(){
|
void Localisation_init(int id){
|
||||||
Temps_init();
|
Temps_init();
|
||||||
QEI_init();
|
QEI_init(id);
|
||||||
position.x_mm = 0;
|
position.x_mm = 0;
|
||||||
position.y_mm = 0;
|
position.y_mm = 0;
|
||||||
position.angle_radian = 0;
|
position.angle_radian = 0;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
struct position_t Localisation_get(void);
|
struct position_t Localisation_get(void);
|
||||||
void Localisation_gestion();
|
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(float x_mm, float y_mm, float angle_radian);
|
||||||
void Localisation_set_x(float x_mm);
|
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
|
// Nombre d'impulsions par tour de roue : 8000
|
||||||
// Impulsion / mm : 42,44
|
// 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;
|
struct QEI_t QEI_A, QEI_B;
|
||||||
@ -28,7 +30,7 @@ bool QEI_est_init = false;
|
|||||||
PIO pio_QEI = pio0;
|
PIO pio_QEI = pio0;
|
||||||
|
|
||||||
|
|
||||||
void QEI_init(){
|
void QEI_init(int identifiant){
|
||||||
// Initialisation des 3 modules QEI
|
// Initialisation des 3 modules QEI
|
||||||
// Chaque module QEI sera dans une machine à état du PIO 0
|
// Chaque module QEI sera dans une machine à état du PIO 0
|
||||||
if(!QEI_est_init){
|
if(!QEI_est_init){
|
||||||
@ -48,6 +50,10 @@ void QEI_init(){
|
|||||||
QEI_B.value=0;
|
QEI_B.value=0;
|
||||||
QEI_est_init=true;
|
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)
|
/// @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()
|
/// @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){
|
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;
|
extern struct QEI_t QEI_A, QEI_B, QEI_C;
|
||||||
|
|
||||||
void QEI_update(void);
|
void QEI_update(void);
|
||||||
void QEI_init(void);
|
void QEI_init(int);
|
||||||
int QEI_get(enum QEI_name_t qei);
|
int QEI_get(enum QEI_name_t qei);
|
||||||
float QEI_get_mm(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;
|
float vitesse_max_contrainte_obstacle;
|
||||||
|
|
||||||
/// @brief Initialise le module Trajet. A appeler en phase d'initilisation
|
/// @brief Initialise le module Trajet. A appeler en phase d'initilisation
|
||||||
void Trajet_init(){
|
void Trajet_init(int id){
|
||||||
Temps_init();
|
Temps_init();
|
||||||
AsserMoteur_Init();
|
AsserMoteur_Init(id);
|
||||||
abscisse = 0;
|
abscisse = 0;
|
||||||
vitesse_mm_s = 0;
|
vitesse_mm_s = 0;
|
||||||
position_mm = 0;
|
position_mm = 0;
|
||||||
|
2
Trajet.h
2
Trajet.h
@ -20,7 +20,7 @@ enum etat_trajet_t{
|
|||||||
|
|
||||||
extern const float distance_pas_obstacle;
|
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_config(float _vitesse_max_trajet_mm_s, float _acceleration_mm_ss);
|
||||||
void Trajet_debut_trajectoire(struct trajectoire_t trajectoire);
|
void Trajet_debut_trajectoire(struct trajectoire_t trajectoire);
|
||||||
enum etat_trajet_t Trajet_avance(float temps_s);
|
enum etat_trajet_t Trajet_avance(float temps_s);
|
||||||
|
12
main.c
12
main.c
@ -63,8 +63,8 @@ void main(void)
|
|||||||
Temps_init();
|
Temps_init();
|
||||||
//tension_batterie_init();
|
//tension_batterie_init();
|
||||||
identifiant_init();
|
identifiant_init();
|
||||||
Localisation_init();
|
Localisation_init(identifiant_lire());
|
||||||
Trajet_init();
|
Trajet_init(identifiant_lire());
|
||||||
i2c_maitre_init();
|
i2c_maitre_init();
|
||||||
|
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ void main(void)
|
|||||||
|
|
||||||
while(get_tirette());
|
while(get_tirette());
|
||||||
|
|
||||||
sleep_ms(90000);
|
//sleep_ms(90000);
|
||||||
|
|
||||||
temps_depart_ms = Temps_get_temps_ms();
|
temps_depart_ms = Temps_get_temps_ms();
|
||||||
|
|
||||||
@ -234,6 +234,9 @@ void configure_trajet(int identifiant, int couleur){
|
|||||||
switch (identifiant)
|
switch (identifiant)
|
||||||
{
|
{
|
||||||
case 0:
|
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;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
Localisation_set(3000-1249, 2000-63, 0);
|
Localisation_set(3000-1249, 2000-63, 0);
|
||||||
@ -268,6 +271,9 @@ void configure_trajet(int identifiant, int couleur){
|
|||||||
switch (identifiant)
|
switch (identifiant)
|
||||||
{
|
{
|
||||||
case 0:
|
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;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
Localisation_set(1249, 2000-63, M_PI);
|
Localisation_set(1249, 2000-63, M_PI);
|
||||||
|
Loading…
Reference in New Issue
Block a user