mesure de l'angle sur AS5048 par SPI

Dependencies:   mbed

Revision:
0:5a1830df0b66
Child:
1:d92ff88de240
diff -r 000000000000 -r 5a1830df0b66 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Oct 08 14:59:11 2019 +0000
@@ -0,0 +1,47 @@
+#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) 
+    {
+        
+    }
+}
\ No newline at end of file