![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
mesure de l'angle sur AS5048 par SPI
Diff: main.cpp
- Revision:
- 1:d92ff88de240
- Parent:
- 0:5a1830df0b66
--- a/main.cpp Tue Oct 08 14:59:11 2019 +0000 +++ b/main.cpp Tue Nov 30 13:37:45 2021 +0000 @@ -1,47 +1,31 @@ #include "mbed.h" #include "as5048spi.h" -#define rayon_roue 0.0045 #define pi 3.14159 -#define intervalle 0.005 - As5048Spi sensor(PB_15, PB_14, PB_13, PB_12); //MOSI, MISO, SCKL, CS Serial pc(USBTX, USBRX); // tx, rx -InterruptIn bouton(PC_13); -Ticker timer; -int angle, degrees_avant, degrees_maintenant, degrees_vitesse; -float vitesse; + +float mesure_angle_encodeur(); -void donnee_saisie() +float mesure_angle_encodeur() { + int angle; const int* angles = sensor.read_angle(); angle = angles[0]; - //Récupération de l'angle précédent - degrees_avant = degrees_maintenant; - - //Aquisition du nouvel angle - degrees_maintenant = sensor.degrees(angle)/100; - - //Calcul de la différence - degrees_vitesse = (degrees_maintenant - degrees_avant) / intervalle; + float degre; - vitesse = (rayon_roue * degrees_vitesse * 2 * pi / 360) /*/ (5 + 0.01 / (2 * pi))*/; -} - -void print_speed() -{ - timer.detach(); - //Affichage du résultat - pc.printf("rotation = %d degrees/s, vitesse = %.4f mm/s \r", degrees_vitesse, vitesse * 1000); - timer.attach(&donnee_saisie, intervalle); //Lancement de la fonction "donnee_saisie()" toutes les 1 sec + //Aquisition de l'angle + degre = sensor.degrees(angle)/100.0; + return degre; } int main() { - bouton.rise(&print_speed); - timer.attach(&donnee_saisie, intervalle); //Lancement de la fonction "donnee_saisie()" toutes les 1 sec + float angle_encodeur; while(1) { - + angle_encodeur = mesure_angle_encodeur(); + pc.printf("angle = %.2f degrees \n\r", angle_encodeur); + wait(1); } } \ No newline at end of file