Libraire pour la controler le module DRV8825

Dependencies:   mbed FastPWM

Dependents:   AresCDFMainCode_capteur_US AresCDFMainCode_us2 AresCDFMainCode

Revision:
8:f461cf45d0b1
Parent:
6:12fa3864b532
--- a/DRV8825.cpp	Sun Jul 12 13:19:09 2020 +0000
+++ b/DRV8825.cpp	Tue Jul 14 09:30:48 2020 +0000
@@ -10,6 +10,8 @@
     m_dir = new DigitalOut(PC_6);
     m_step = new FastPWM(PC_8);
     m_step->write(0.50);
+    m_rayon = 10;
+    m_pas = 200;
     m_en->write(STOP);
 }
 
@@ -24,9 +26,29 @@
     m_en = new DigitalOut(en);
     m_dir = new DigitalOut(dir);
     m_step = new FastPWM(step);
+    m_rayon = 100;
+    m_pas = 200;
     m_step->write(0.50);
     m_en->write(STOP);
 }
+/**
+ * @brief Initialisation du modul avec des paramètres choisis
+ * @param en : pin En
+ * @param dir : pin Dir
+ * @param step : pin Step
+ * @param r : rayon de la roue (en mm)
+ * @param pas : nombre de pas
+ */
+DRV8825::DRV8825(PinName en, PinName dir, PinName step, float r, unsigned int pas){
+    m_en = new DigitalOut(en);
+    m_dir = new DigitalOut(dir);
+    m_step = new FastPWM(step);
+    m_rayon = r;
+    m_pas = pas;
+    m_step->write(0.50);
+    m_en->write(STOP);
+}
+
 
 /**
  * @brief Permet d'affecter une directions à notre module
@@ -45,10 +67,25 @@
 }
 
 /**
- * @brief Permet de définir la vitesse du moteur pas à pas
- * @param ms : le temps en millis milliseconds
+ * @brief Permet de définir la vitesse de rotation du moteur pas à pas (RPM)
+ * @param vitesse : la vitesse que l'on souhaite atteindre
  */
-void DRV8825::move(unsigned int ms){
-        m_step->period_ms(ms);
+void DRV8825::moveRotSpeed(float vitesse){
+        vitesse= vitesse /M_TO_S;
+        float t = 1/(m_pas*vitesse);
+        m_step->period_us(t*E6);
         m_step->write(0.50);
 }
+
+
+/**
+ * @brief Permet de définir la vitesse linéaire du moteur pas à pas (m/s)
+ * @param vitesse : la vitesse que l'on souhaite atteindre
+ */
+void DRV8825::moveLinSpeed(float vitesse){
+        
+        vitesse= vitesse*E3;
+        float t = (2*PI*m_rayon)/(m_pas*vitesse);
+        m_step->period_us(t*E6);
+        m_step->write(0.50);
+}