Robot's source code

Dependencies:   mbed

Revision:
36:54f86bc6fd80
Child:
40:83ce8d1072ef
diff -r 54b13e154801 -r 54f86bc6fd80 Asservissement/Motor.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Asservissement/Motor.h	Sun Mar 08 21:24:27 2015 +0000
@@ -0,0 +1,88 @@
+#include "mbed.h"
+
+/** Motor
+ *  Classe permettant de controler un moteur
+ */
+class Motor
+{
+    private:
+        PwmOut* pwm;
+        DigitalOut* dir;
+        bool inverse;
+        float speed;
+        
+    public:
+        /** Création d'un moteur
+         *
+         * @param pwm Pin sur laquelle sort la PWM
+         * @param dir Pin sur laquelle sort le bit de direction
+         */
+        Motor(PwmOut* pwm, DigitalOut* dir)
+        {
+            this->pwm = pwm;
+            this->dir = dir;
+            inverse = false;
+            speed = 0.0f;
+            this->pwm->period_us(10);    
+            
+        }
+        virtual ~Motor();
+
+        /** Fixe la vitesse du moteur
+         *
+         * @param s Vitesse du moteur entre -1 et 1
+         */
+        void setSpeed(float s)
+        {
+            if(s<= 1.0f && s >=-1.0f)
+            {
+                speed = fabs_(s);   
+                inverse = (s <= 0.0f);
+            }
+            else
+            {
+                speed = 0.0f;
+                inverse = false;
+            }    
+        }
+
+        /** Retourne la vitesse théorique du moteur
+         *
+         * @return Vitesse du moteur entre -1 et 1
+         */
+        float getSpeed(){return speed;}
+
+        /** Fixe l'invesrion de polarité
+         *
+         * Exemple :
+         * @code
+         * moteur.setSpeed(1); // le moteur tourne à pleine vitesse dans le sens trigo
+         * moteur.setInverse(true); // le moteur tourne à pleine vitesse dans le sens anti-trigo
+         * moteur.setSpeed(-1); // le moteur tourne à pleine vitesse dans le sens trigo
+         * @endcode
+         *
+         * @param i Inversion de polarité
+         */
+        void setInverse(bool i)
+        {
+            inverse = i;
+        }
+
+        /** Retourne l'état d'inversion de polarité
+         *
+         * @return True ou False
+         */
+        bool setInverse(){return inverse;}    
+        
+        void update(float s)
+        {
+            this->setSpeed(s);
+            
+            if(inverse)
+                dir->write(1);
+            else
+                dir->write(0);
+                
+            pwm->write(speed);   
+        }
+};
\ No newline at end of file