![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
gestion encodeur 5048 par spi
main.cpp
- Committer:
- PC2ROBOT
- Date:
- 2019-10-08
- Revision:
- 0:5a1830df0b66
File content as of revision 0:5a1830df0b66:
#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; void donnee_saisie() { 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; 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 } int main() { bouton.rise(&print_speed); timer.attach(&donnee_saisie, intervalle); //Lancement de la fonction "donnee_saisie()" toutes les 1 sec while(1) { } }