Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Actionneurs/Servo.cpp@0:1cfd66c3a181, 2019-05-22 (annotated)
- Committer:
- xav_jann1
- Date:
- Wed May 22 16:54:27 2019 +0000
- Revision:
- 0:1cfd66c3a181
Premiere version
Who changed what in which revision?
User | Revision | Line number | New 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 | } |