From b5b6914f2a94c5e2a9b8348486e70bd6f3ef0b3c Mon Sep 17 00:00:00 2001 From: Samuel Date: Sun, 21 Jan 2024 18:48:59 +0100 Subject: [PATCH] Diminution de la vitesse de communication 100kHz -> 10kHz + taille du message 255 -> 25. Lecture des consignes de vitesse pour commander les moteurs --- communication.c | 2 +- i2c_maitre.c | 2 +- main.c | 68 +++++++++++++++++++++++++++++++++---------------- moteur.c | 4 +-- 4 files changed, 50 insertions(+), 26 deletions(-) diff --git a/communication.c b/communication.c index 10d8470..bdaf0fc 100644 --- a/communication.c +++ b/communication.c @@ -102,6 +102,6 @@ void communication_send_message(unsigned char * message, unsigned int message_le } int communication_read_message(unsigned char * message){ - i2c_lire_registre(I2C_SLAVE_ADDRESS, 0, message, 255); + i2c_lire_registre(I2C_SLAVE_ADDRESS, 0, message, 25); } diff --git a/i2c_maitre.c b/i2c_maitre.c index 7975b09..dbf61e1 100644 --- a/i2c_maitre.c +++ b/i2c_maitre.c @@ -31,7 +31,7 @@ enum i2c_resultat_t i2c_transmission(uint8_t _adresse_7bits, uint8_t* emission, void i2c_maitre_init(void){ //stdio_init_all(); - i2c_init(i2c1, 100 * 1000); + i2c_init(i2c1, 10 * 1000); printf("Initialisation des broches\n"); for(int i=0; i++; i<=28){ diff --git a/main.c b/main.c index 1ea9083..6c6a0a2 100644 --- a/main.c +++ b/main.c @@ -12,8 +12,8 @@ #define I2C1_SDA_PIN 18 #define I2C1_SCL_PIN 19 -// Convert te joystick value to an char value -uint8_t Conversions_joystick2uint8(uint16_t joystick_value); +// Allumage de la led verte +#define PIN_LED_VERTE 25 void main(void) { @@ -24,35 +24,59 @@ void main(void) Init_motion_motor(); communication_init(); - uint vitesse_x = 0; - uint vitesse_y = 0; + gpio_init(PIN_LED_VERTE); + gpio_set_function(PIN_LED_VERTE, GPIO_FUNC_PWM); + pwm_set_clkdiv(4, 10000); + pwm_set_wrap(4, 100); + pwm_set_enabled(4, true); + pwm_set_chan_level(4, PWM_CHAN_B, 100); + + uint vitesse_angle = 0; + uint vitesse_m1 = 0; + uint vitesse_m2 = 0; + uint vitesse_m3 = 0; + uint vitesse_m4 = 0; while(1){ if (!(communication_read_message(reception) == I2C_ECHEC)) { - vitesse_x = reception[0]-128; - vitesse_y = reception[1]-128; + vitesse_m1 = reception[0] - 128; + vitesse_m2 = reception[0] - 128; + vitesse_m3 = reception[1] - 128; + vitesse_m4 = reception[1] - 128; + + vitesse_angle = reception[2] - 128; + } else { - vitesse_x = 0; - vitesse_y = 0; + vitesse_angle = 0; + vitesse_m1 = 0; + vitesse_m2 = 0; + vitesse_m3 = 0; + vitesse_m4 = 0; + + pwm_set_chan_level(4, PWM_CHAN_B, 10); + } - Motor1_speed(vitesse_x); - Motor2_speed(vitesse_x); - Motor3_speed(vitesse_y); - Motor4_speed(vitesse_y); + if(vitesse_angle != 0) + { + vitesse_m1 = vitesse_angle; + vitesse_m2 = vitesse_angle; + vitesse_m3 = vitesse_angle; + vitesse_m4 = vitesse_angle; + } + + printf(">vitesseM1:%d\n", vitesse_m1); + printf(">vitesseM2:%d\n", vitesse_m2); + printf(">vitesseM3:%d\n", vitesse_m3); + printf(">vitesseM4:%d\n", vitesse_m4); + + Motor1_speed(vitesse_m1); + Motor2_speed(vitesse_m2); + Motor3_speed(vitesse_m3); + Motor4_speed(vitesse_m4); } -} - - - -/// @brief Prend un nombre entre 0 et 4096, et sort un nombre entre 0 et 255 -/// @return un nombre entre 0 et 255 -uint8_t Conversions_joystick2uint8(uint16_t joystick_value) -{ - uint8_t valeur = joystick_value / 4; - return valeur; } \ No newline at end of file diff --git a/moteur.c b/moteur.c index 70b119e..0ad5031 100644 --- a/moteur.c +++ b/moteur.c @@ -56,8 +56,8 @@ void Init_motion_motor(void) gpio_set_function(MOTEUR4_PIN_ACTIVATION, GPIO_FUNC_PWM); // Set wrap of pwm slices - pwm_set_wrap(0, 1000); - pwm_set_wrap(1, 1000); + pwm_set_wrap(0, 127); + pwm_set_wrap(1, 127); // Active all pwm slices pwm_set_enabled(0, true);