Robot's source code
Dependencies: mbed
Diff: Asservissement/Motor.h
- Revision:
- 36:54f86bc6fd80
- Child:
- 40:83ce8d1072ef
--- /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