diff --git a/Services/DCMotor.c b/Services/DCMotor.c index 4b7e7e9..bf33cd8 100644 --- a/Services/DCMotor.c +++ b/Services/DCMotor.c @@ -1 +1,35 @@ #include "DCMotor.h" + +void DCMotor_conf(double speed) { + + double speedAbs = (speed > 0.) ? speed : -speed; + int sens = (speed > 0.) ? 1 : 0; + + //On règle la vitesse en valeur absolue + Timer_pwmo_conf(TIM2, LL_TIM_CHANNEL_CH2, 50, speedAbs); + + //On règle le sens du moteur + GPIO_conf(GPIOA, LL_GPIO_PIN_2, LL_GPIO_MODE_OUTPUT, LL_GPIO_OUTPUT_OPENDRAIN, LL_GPIO_PULL_DOWN); + GPIO_setPin(GPIOA, LL_GPIO_PIN_2, sens); +} + +void DCMotor_setSpeed(double speed) { + + double speedAbs = (speed > 0.) ? speed : -speed; + int sens = (speed > 0.) ? 1 : 0; + + Timer_pwmo_setDutyCycle(TIM2, LL_TIM_CHANNEL_CH2, speedAbs); + GPIO_setPin(GPIOA, LL_GPIO_PIN_2, sens); + +} + +double DCMotor_getSpeed(){ + + double speedAbs = Timer_pwmo_getDutyCycle(TIM2, LL_TIM_CHANNEL_CH2); + int sens = GPIO_readPin(GPIOA, LL_GPIO_PIN_2); + + double speed = (sens) ? speedAbs : -speedAbs; + + return speed; + +} diff --git a/Services/DCMotor.h b/Services/DCMotor.h index 924b7d4..417a320 100644 --- a/Services/DCMotor.h +++ b/Services/DCMotor.h @@ -1,5 +1,13 @@ #ifndef DCMOTOR_H #define DCMOTOR_H +#include "GPIO.h" +#include "Timer.h" + +void DCMotor_conf(double duty_cycle); + +void DCMotor_setSpeed(double speed); + +double DCMotor_getSpeed(void); #endif diff --git a/Services/RFReceiver.c b/Services/RFReceiver.c index 87a3d81..784dba2 100644 --- a/Services/RFReceiver.c +++ b/Services/RFReceiver.c @@ -14,4 +14,4 @@ double RFReceiver_getData(){ return (duree_impulsion -1) * 200 - 100; -} \ No newline at end of file +} diff --git a/Services/RFReceiver.h b/Services/RFReceiver.h index ce84ce4..d275b20 100644 --- a/Services/RFReceiver.h +++ b/Services/RFReceiver.h @@ -1,7 +1,7 @@ #ifndef RFRECEIVER_H #define RFRECEIVER_H -#include "Timer.c" +#include "Timer.h" void RFReceiver_conf(void);