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.
sm_servo.cpp@4:efa207509f63, 2019-09-29 (annotated)
- Committer:
- GaspardD
- Date:
- Sun Sep 29 14:58:03 2019 +0000
- Revision:
- 4:efa207509f63
- Parent:
- 3:1b7eb426247e
- Child:
- 6:ab9f3695633f
algo fonctionnel direction + esc rotation a droite 10 sec a vitesse minimale
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
GaspardD | 2:e9d928fd327a | 1 | #include "sm_servo.h" |
GaspardD | 2:e9d928fd327a | 2 | |
GaspardD | 2:e9d928fd327a | 3 | PwmOut pwm_Servo(PE_9); |
GaspardD | 2:e9d928fd327a | 4 | E_STATE_SERVO e_stateServo; |
GaspardD | 3:1b7eb426247e | 5 | bool directionCheck = false; |
GaspardD | 4:efa207509f63 | 6 | int pulsewidth = SERVO_PULSE_MAX_US; |
GaspardD | 2:e9d928fd327a | 7 | |
GaspardD | 2:e9d928fd327a | 8 | void init_sm_servo() |
GaspardD | 2:e9d928fd327a | 9 | { |
GaspardD | 2:e9d928fd327a | 10 | e_stateServo = SERVO_INIT; |
GaspardD | 2:e9d928fd327a | 11 | } |
GaspardD | 2:e9d928fd327a | 12 | |
GaspardD | 2:e9d928fd327a | 13 | void update_sm_servo() |
GaspardD | 2:e9d928fd327a | 14 | { |
GaspardD | 3:1b7eb426247e | 15 | E_STATE_SERVO next_state = e_stateServo; |
GaspardD | 2:e9d928fd327a | 16 | |
GaspardD | 2:e9d928fd327a | 17 | switch(e_stateServo) { |
GaspardD | 2:e9d928fd327a | 18 | case SERVO_INIT: |
GaspardD | 3:1b7eb426247e | 19 | if(directionCheck) { |
GaspardD | 3:1b7eb426247e | 20 | next_state = SERVO_COMMAND; |
GaspardD | 3:1b7eb426247e | 21 | } |
GaspardD | 2:e9d928fd327a | 22 | break; |
GaspardD | 2:e9d928fd327a | 23 | case SERVO_COMMAND: |
GaspardD | 2:e9d928fd327a | 24 | break; |
GaspardD | 2:e9d928fd327a | 25 | default: |
GaspardD | 3:1b7eb426247e | 26 | break; |
GaspardD | 3:1b7eb426247e | 27 | } |
GaspardD | 2:e9d928fd327a | 28 | |
GaspardD | 2:e9d928fd327a | 29 | e_stateServo = next_state; |
GaspardD | 2:e9d928fd327a | 30 | return; |
GaspardD | 2:e9d928fd327a | 31 | } |
GaspardD | 2:e9d928fd327a | 32 | |
GaspardD | 2:e9d928fd327a | 33 | void output_sm_servo() |
GaspardD | 2:e9d928fd327a | 34 | { |
GaspardD | 3:1b7eb426247e | 35 | switch(e_stateServo) { |
GaspardD | 3:1b7eb426247e | 36 | case SERVO_INIT: |
GaspardD | 3:1b7eb426247e | 37 | wait(1); |
GaspardD | 4:efa207509f63 | 38 | pc.printf("init servo with pulse %d us\r\n",SERVO_PULSE_MIDDLE_US); |
GaspardD | 3:1b7eb426247e | 39 | pwm_Servo.period_ms(SERVO_PERIOD_DURATION_MS); |
GaspardD | 3:1b7eb426247e | 40 | pwm_Servo.pulsewidth_us(SERVO_PULSE_MIDDLE_US); |
GaspardD | 3:1b7eb426247e | 41 | directionCheck = true; |
GaspardD | 3:1b7eb426247e | 42 | break; |
GaspardD | 3:1b7eb426247e | 43 | case SERVO_COMMAND: |
GaspardD | 4:efa207509f63 | 44 | /* |
GaspardD | 4:efa207509f63 | 45 | if(pulsewidth < SERVO_PULSE_MAX_US && directionCheck) { |
GaspardD | 4:efa207509f63 | 46 | pulsewidth += 1; |
GaspardD | 4:efa207509f63 | 47 | if (pulsewidth >= SERVO_PULSE_MAX_US) { |
GaspardD | 4:efa207509f63 | 48 | directionCheck = false; |
GaspardD | 4:efa207509f63 | 49 | } |
GaspardD | 4:efa207509f63 | 50 | } else if (pulsewidth > SERVO_PULSE_MIN_US && !directionCheck) { |
GaspardD | 4:efa207509f63 | 51 | pulsewidth -= 1; |
GaspardD | 4:efa207509f63 | 52 | if (pulsewidth <= SERVO_PULSE_MIN_US) { |
GaspardD | 4:efa207509f63 | 53 | directionCheck = true; |
GaspardD | 4:efa207509f63 | 54 | } |
GaspardD | 4:efa207509f63 | 55 | } |
GaspardD | 4:efa207509f63 | 56 | pc.printf("send pulse %d to servo\r\n",pulsewidth); |
GaspardD | 4:efa207509f63 | 57 | */ |
GaspardD | 4:efa207509f63 | 58 | |
GaspardD | 4:efa207509f63 | 59 | pwm_Servo.pulsewidth_us(pulsewidth); |
GaspardD | 4:efa207509f63 | 60 | |
GaspardD | 3:1b7eb426247e | 61 | break; |
GaspardD | 3:1b7eb426247e | 62 | default: |
GaspardD | 3:1b7eb426247e | 63 | break; |
GaspardD | 3:1b7eb426247e | 64 | } |
GaspardD | 3:1b7eb426247e | 65 | return; |
GaspardD | 2:e9d928fd327a | 66 | } |