Écris une fonction qui lit les deux encodeurs et affiche leurs valeurs.
Solution :
#include <stdio.h>
#include <stdint.h>
/* Données I2C simulées (encodeurs) */
int16_t sim_encodeur_gauche = 0;
int16_t sim_encodeur_droit = 0;
/* Sur le robot, cette fonction fait deux échanges I2C
(registres 0x04 et 0x06 du STM8 à l'adresse 0x10).
Ici on lit directement les variables simulées. */
void lireEncodeurs(void)
{
int16_t enc_gauche = sim_encodeur_gauche;
int16_t enc_droit = sim_encodeur_droit;
printf("Gauche: %d, Droit: %d\n", enc_gauche, enc_droit);
}
int main(void)
{
/* Séquence simulée : le robot avance puis recule */
sim_encodeur_gauche = 120;
sim_encodeur_droit = 118;
printf("--- Lecture 1 ---\n");
lireEncodeurs();
sim_encodeur_gauche = 245;
sim_encodeur_droit = 243;
printf("--- Lecture 2 ---\n");
lireEncodeurs();
sim_encodeur_gauche = -30;
sim_encodeur_droit = -28;
printf("--- Lecture 3 (marche arrière) ---\n");
lireEncodeurs();
return 0;
}
Solution copiée dans l'éditeur.