Programme course fonctionnel Jour J Croisement non pris en charge (tourne en rond)
Fork of Programme_course_30Tr by
Diff: motor.cpp
- Revision:
- 0:3ec7fc598e48
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/motor.cpp Thu Jan 26 07:37:45 2017 +0000 @@ -0,0 +1,57 @@ +#include "motor.h" + + +PwmOut moteurA_avancer (PTC2); +PwmOut moteurA_reculer (PTC1); + +PwmOut moteurB_avancer (PTC4); +PwmOut moteurB_reculer (PTC3); + + +PwmOut servo (PTB0); + +void PWM_motor (int vitesse_gauche ,int vitesse_droite) +{ + + if(vitesse_gauche >= 0)//On avance + { + moteurA_reculer.write(0); + moteurA_avancer.write((vitesse_gauche*CORRECTION)/100.0); + } + else//On recule + { + moteurA_avancer.write(0); + moteurA_reculer.write(vitesse_gauche/100.0); + } + + + if(vitesse_droite >= 0)//On avance + { + moteurB_reculer.write(0); + moteurB_avancer.write(vitesse_droite/100.0); + } + else//On recule + { + moteurB_avancer.write(0); + moteurB_reculer.write(vitesse_droite/100.0); + } + +} +void motor_init() +{ + moteurA_avancer.period(1.0/FREQ_PWM); + moteurB_avancer.write(0); + moteurA_avancer.write(0); + moteurB_reculer.write(0); + moteurA_reculer.write(0); + activate_motor = 1; + +} +void angle_servo_moteur (double angle) +{ + if(angle > 30) angle = 30; + if(angle < -30) angle = -30; + angle = (angle * PWM_ANGLE_DROIT_MAX) / ANGLE_DROIT_MAX; + angle += 0.0725; + servo.write(angle); +}