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 "Servo.h"
xav_jann1 0:1cfd66c3a181 2 #include "mbed.h"
xav_jann1 0:1cfd66c3a181 3
xav_jann1 0:1cfd66c3a181 4 // Constructeur:
xav_jann1 0:1cfd66c3a181 5 Servo::Servo(PinName pin) : m_pin(pin) {}
xav_jann1 0:1cfd66c3a181 6
xav_jann1 0:1cfd66c3a181 7 // Active le servomoteur:
xav_jann1 0:1cfd66c3a181 8 void Servo::enable(int startPos, float period) {
xav_jann1 0:1cfd66c3a181 9 m_position = startPos;
xav_jann1 0:1cfd66c3a181 10 m_pulse.attach_us(callback(this, &Servo::startPulse), period);
xav_jann1 0:1cfd66c3a181 11 }
xav_jann1 0:1cfd66c3a181 12
xav_jann1 0:1cfd66c3a181 13 // Désactive le servomoteur:
xav_jann1 0:1cfd66c3a181 14 void Servo::disable() {
xav_jann1 0:1cfd66c3a181 15 m_pulse.detach();
xav_jann1 0:1cfd66c3a181 16 }
xav_jann1 0:1cfd66c3a181 17
xav_jann1 0:1cfd66c3a181 18 // Déplace le servomoteur à la position angle (en °):
xav_jann1 0:1cfd66c3a181 19 void Servo::pos(int angle) {
xav_jann1 0:1cfd66c3a181 20 // Conversion degrée en durée d'impulsion:
xav_jann1 0:1cfd66c3a181 21 m_position = -11.111f * angle + 2500;
xav_jann1 0:1cfd66c3a181 22 }
xav_jann1 0:1cfd66c3a181 23
xav_jann1 0:1cfd66c3a181 24 // Début d'une impulsion:
xav_jann1 0:1cfd66c3a181 25 void Servo::startPulse() {
xav_jann1 0:1cfd66c3a181 26 m_pin = 1;
xav_jann1 0:1cfd66c3a181 27 m_pulseStop.attach_us(callback(this, &Servo::endPulse), m_position);
xav_jann1 0:1cfd66c3a181 28 }
xav_jann1 0:1cfd66c3a181 29
xav_jann1 0:1cfd66c3a181 30 // Fin de l'impulsion:
xav_jann1 0:1cfd66c3a181 31 void Servo::endPulse() {
xav_jann1 0:1cfd66c3a181 32 m_pin = 0;
xav_jann1 0:1cfd66c3a181 33 }