Libraire pour la controler le module DRV8825
Dependents: AresCDFMainCode_capteur_US AresCDFMainCode_us2 AresCDFMainCode
DRV8825.cpp
- Committer:
- g0dd4
- Date:
- 2020-07-14
- Revision:
- 9:3615573bfe43
- Parent:
- 8:f461cf45d0b1
File content as of revision 9:3615573bfe43:
#include "DRV8825.h" /** * @brief Initialisation du modul avec des paramètres par défaut */ DRV8825::DRV8825(){ m_en = new DigitalOut(PC_5); 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); } /** * @brief Initialisation du modul avec des paramètres choisis * @param en : pin En * @param dir : pin Dir * @param step : pin Step */ DRV8825::DRV8825(PinName en, PinName dir ,PinName step){ 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 * @param dir : l'état que l'on souhaite appliquer */ void DRV8825::setDir(uint8_t dir){ m_dir->write(dir); } /** * @brief Permet de définir si l'on souhaite bloquer ou non le moteur * @param en : l'état que l'on douhaite appliquer */ void DRV8825::setEnable(uint8_t en){ m_en->write(en); } /** * @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::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); }