Robot's source code
Dependencies: mbed
Asservissement/Motor.h
- Committer:
- Near32
- Date:
- 2015-03-08
- Revision:
- 36:54f86bc6fd80
- Child:
- 40:83ce8d1072ef
File content as of revision 36:54f86bc6fd80:
#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); } };