Xavier Jannin / Mbed 2 deprecated PETIT_robot

Dependencies:   mbed

Committer:
xav_jann1
Date:
Wed May 22 16:54:27 2019 +0000
Revision:
0:1cfd66c3a181
Premiere version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xav_jann1 0:1cfd66c3a181 1 #include "Moteur.h"
xav_jann1 0:1cfd66c3a181 2
xav_jann1 0:1cfd66c3a181 3 Moteur::Moteur(PinName pin_en, PinName pin_in1, PinName pin_in2):
xav_jann1 0:1cfd66c3a181 4 m_pwm(pin_en), m_in1(pin_in1, 0), m_in2(pin_in2, 0) {
xav_jann1 0:1cfd66c3a181 5
xav_jann1 0:1cfd66c3a181 6 m_pwm.period_us(100.0f); // Frequency = 10 kHz
xav_jann1 0:1cfd66c3a181 7
xav_jann1 0:1cfd66c3a181 8 // PWM maximale qui peut être envoyée avec la commande turn():
xav_jann1 0:1cfd66c3a181 9 m_pwm_max = 0.5;
xav_jann1 0:1cfd66c3a181 10
xav_jann1 0:1cfd66c3a181 11 m_offset = 0.0f;
xav_jann1 0:1cfd66c3a181 12 }
xav_jann1 0:1cfd66c3a181 13
xav_jann1 0:1cfd66c3a181 14 // Setter:
xav_jann1 0:1cfd66c3a181 15 void Moteur::setPWM(float pwm) { m_pwm = pwm + m_offset; }
xav_jann1 0:1cfd66c3a181 16 void Moteur::setPWM_max(float pwm) { m_pwm_max = pwm + m_offset; }
xav_jann1 0:1cfd66c3a181 17 void Moteur::setOffset(float offset) { m_offset = offset; }
xav_jann1 0:1cfd66c3a181 18
xav_jann1 0:1cfd66c3a181 19 /*** Déplacement ***/
xav_jann1 0:1cfd66c3a181 20
xav_jann1 0:1cfd66c3a181 21 // Avant:
xav_jann1 0:1cfd66c3a181 22 void Moteur::forward() {
xav_jann1 0:1cfd66c3a181 23 m_in1 = 1;
xav_jann1 0:1cfd66c3a181 24 m_in2 = 0;
xav_jann1 0:1cfd66c3a181 25 }
xav_jann1 0:1cfd66c3a181 26
xav_jann1 0:1cfd66c3a181 27 // Arrière:
xav_jann1 0:1cfd66c3a181 28 void Moteur::backward() {
xav_jann1 0:1cfd66c3a181 29 m_in1 = 0;
xav_jann1 0:1cfd66c3a181 30 m_in2 = 1;
xav_jann1 0:1cfd66c3a181 31 }
xav_jann1 0:1cfd66c3a181 32
xav_jann1 0:1cfd66c3a181 33 // Opposé:
xav_jann1 0:1cfd66c3a181 34 void Moteur::opposite() {
xav_jann1 0:1cfd66c3a181 35 m_in1 = !m_in1.read();
xav_jann1 0:1cfd66c3a181 36 m_in2 = !m_in2.read();
xav_jann1 0:1cfd66c3a181 37 }
xav_jann1 0:1cfd66c3a181 38
xav_jann1 0:1cfd66c3a181 39 // Arrêt:
xav_jann1 0:1cfd66c3a181 40 void Moteur::stop() {
xav_jann1 0:1cfd66c3a181 41 m_pwm.write(0.0f); // Duty cycle
xav_jann1 0:1cfd66c3a181 42 }
xav_jann1 0:1cfd66c3a181 43
xav_jann1 0:1cfd66c3a181 44 // Avance ou recule en fonction du pwm:
xav_jann1 0:1cfd66c3a181 45 void Moteur::turn(float pwm) {
xav_jann1 0:1cfd66c3a181 46 if (pwm < 0) {
xav_jann1 0:1cfd66c3a181 47 pwm -= m_offset;
xav_jann1 0:1cfd66c3a181 48 if (pwm < -m_pwm_max) pwm = -m_pwm_max;
xav_jann1 0:1cfd66c3a181 49 setPWM(-pwm);
xav_jann1 0:1cfd66c3a181 50 backward();
xav_jann1 0:1cfd66c3a181 51 } else {
xav_jann1 0:1cfd66c3a181 52 pwm += m_offset;
xav_jann1 0:1cfd66c3a181 53 if (pwm > m_pwm_max) pwm = m_pwm_max;
xav_jann1 0:1cfd66c3a181 54 setPWM(pwm);
xav_jann1 0:1cfd66c3a181 55 forward();
xav_jann1 0:1cfd66c3a181 56 }
xav_jann1 0:1cfd66c3a181 57 }