gestion encodeur 5048 par spi

Dependencies:   mbed

Committer:
PC2ROBOT
Date:
Tue Oct 08 14:59:11 2019 +0000
Revision:
0:5a1830df0b66
as5048

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PC2ROBOT 0:5a1830df0b66 1 #include "mbed.h"
PC2ROBOT 0:5a1830df0b66 2 #include "as5048spi.h"
PC2ROBOT 0:5a1830df0b66 3
PC2ROBOT 0:5a1830df0b66 4 #define rayon_roue 0.0045
PC2ROBOT 0:5a1830df0b66 5 #define pi 3.14159
PC2ROBOT 0:5a1830df0b66 6
PC2ROBOT 0:5a1830df0b66 7 #define intervalle 0.005
PC2ROBOT 0:5a1830df0b66 8
PC2ROBOT 0:5a1830df0b66 9 As5048Spi sensor(PB_15, PB_14, PB_13, PB_12); //MOSI, MISO, SCKL, CS
PC2ROBOT 0:5a1830df0b66 10 Serial pc(USBTX, USBRX); // tx, rx
PC2ROBOT 0:5a1830df0b66 11 InterruptIn bouton(PC_13);
PC2ROBOT 0:5a1830df0b66 12 Ticker timer;
PC2ROBOT 0:5a1830df0b66 13 int angle, degrees_avant, degrees_maintenant, degrees_vitesse;
PC2ROBOT 0:5a1830df0b66 14 float vitesse;
PC2ROBOT 0:5a1830df0b66 15
PC2ROBOT 0:5a1830df0b66 16 void donnee_saisie()
PC2ROBOT 0:5a1830df0b66 17 {
PC2ROBOT 0:5a1830df0b66 18 const int* angles = sensor.read_angle();
PC2ROBOT 0:5a1830df0b66 19 angle = angles[0];
PC2ROBOT 0:5a1830df0b66 20 //Récupération de l'angle précédent
PC2ROBOT 0:5a1830df0b66 21 degrees_avant = degrees_maintenant;
PC2ROBOT 0:5a1830df0b66 22
PC2ROBOT 0:5a1830df0b66 23 //Aquisition du nouvel angle
PC2ROBOT 0:5a1830df0b66 24 degrees_maintenant = sensor.degrees(angle)/100;
PC2ROBOT 0:5a1830df0b66 25
PC2ROBOT 0:5a1830df0b66 26 //Calcul de la différence
PC2ROBOT 0:5a1830df0b66 27 degrees_vitesse = (degrees_maintenant - degrees_avant) / intervalle;
PC2ROBOT 0:5a1830df0b66 28
PC2ROBOT 0:5a1830df0b66 29 vitesse = (rayon_roue * degrees_vitesse * 2 * pi / 360) /*/ (5 + 0.01 / (2 * pi))*/;
PC2ROBOT 0:5a1830df0b66 30 }
PC2ROBOT 0:5a1830df0b66 31
PC2ROBOT 0:5a1830df0b66 32 void print_speed()
PC2ROBOT 0:5a1830df0b66 33 {
PC2ROBOT 0:5a1830df0b66 34 timer.detach();
PC2ROBOT 0:5a1830df0b66 35 //Affichage du résultat
PC2ROBOT 0:5a1830df0b66 36 pc.printf("rotation = %d degrees/s, vitesse = %.4f mm/s \r", degrees_vitesse, vitesse * 1000);
PC2ROBOT 0:5a1830df0b66 37 timer.attach(&donnee_saisie, intervalle); //Lancement de la fonction "donnee_saisie()" toutes les 1 sec
PC2ROBOT 0:5a1830df0b66 38 }
PC2ROBOT 0:5a1830df0b66 39
PC2ROBOT 0:5a1830df0b66 40 int main() {
PC2ROBOT 0:5a1830df0b66 41 bouton.rise(&print_speed);
PC2ROBOT 0:5a1830df0b66 42 timer.attach(&donnee_saisie, intervalle); //Lancement de la fonction "donnee_saisie()" toutes les 1 sec
PC2ROBOT 0:5a1830df0b66 43 while(1)
PC2ROBOT 0:5a1830df0b66 44 {
PC2ROBOT 0:5a1830df0b66 45
PC2ROBOT 0:5a1830df0b66 46 }
PC2ROBOT 0:5a1830df0b66 47 }