ARES / Mbed 2 deprecated Robot 2016

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Motor.h Source File

Motor.h

00001 #ifndef MOTOR_H
00002 #define MOTOR_H
00003 
00004 #include "mbed.h"
00005 
00006 #define abs(x) (x<0?-x:x)
00007 
00008 /** Motor
00009  *  Classe permettant de controler un moteur
00010  */
00011 class Motor
00012 {
00013     private:
00014         PwmOut pwm;
00015         DigitalOut dir;
00016         bool inverse;
00017         float speed;
00018         
00019     public:
00020         /** Création d'un moteur
00021          *
00022          * @param pwm Pin sur laquelle sort la PWM
00023          * @param dir Pin sur laquelle sort le bit de direction
00024          */
00025         Motor(PinName pin_pwm, PinName pin_dir): pwm(pin_pwm), dir(pin_dir)
00026         {
00027             inverse = false;
00028             speed = 0.0f;
00029             pwm.period_us(10);  
00030             pwm = 0.0f;  
00031             
00032         }
00033         
00034         virtual ~Motor(){}
00035 
00036         /** Fixe la vitesse du moteur
00037          *
00038          * @param s Vitesse du moteur entre -1 et 1
00039          */
00040         void setSpeed(float s)
00041         {
00042             float abss = abs(s);
00043             speed = s;
00044             pwm = abss;
00045             if(s > 0)
00046                 dir = !inverse;
00047             else
00048                 dir = inverse;
00049         }
00050 
00051         /** Retourne la vitesse théorique du moteur
00052          *
00053          * @return Vitesse du moteur entre -1 et 1
00054          */
00055         float getSpeed(){return speed;}
00056 
00057         /** Fixe l'invesrion de polarité
00058          *
00059          * Exemple :
00060          * @code
00061          * moteur.setSpeed(1); // le moteur tourne à pleine vitesse dans le sens trigo
00062          * moteur.setInverse(true); // le moteur tourne à pleine vitesse dans le sens anti-trigo
00063          * moteur.setSpeed(-1); // le moteur tourne à pleine vitesse dans le sens trigo
00064          * @endcode
00065          *
00066          * @param i Inversion de polarité
00067          */
00068         void setInverse(bool i)
00069         {
00070             inverse = i;
00071             
00072             setSpeed(speed);
00073         }
00074 
00075         /** Retourne l'état d'inversion de polarité
00076          *
00077          * @return True ou False
00078          */
00079         bool getInverse(){return inverse;}    
00080         
00081 };
00082 
00083 
00084 #endif