TRR 2018 / Mbed 2 deprecated biniou-TRR2019-DLVV

Dependencies:   mbed MPU6050

Committer:
GaspardD
Date:
Sun Sep 29 20:07:54 2019 +0000
Revision:
6:ab9f3695633f
Parent:
4:efa207509f63
Child:
8:f23601373e8b
jules guesde mc gyver;

Who changed what in which revision?

UserRevisionLine numberNew 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 6:ab9f3695633f 6 int pulsewidth = SERVO_PULSE_MIDDLE_US;//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 }