Руслан Урядинский / MS9g_move_sin

Dependents:   CAN_Simple_Publisher CAN_Pub_actuator

Committer:
RuslanUrya
Date:
Tue May 01 13:08:26 2018 +0000
Revision:
0:be6047ad0802
Child:
1:1ec6af6d0c6d
adding lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RuslanUrya 0:be6047ad0802 1 #include "MS9g_move_sin.h"
RuslanUrya 0:be6047ad0802 2
RuslanUrya 0:be6047ad0802 3 Servo_9g::Servo_9g(){
RuslanUrya 0:be6047ad0802 4 }
RuslanUrya 0:be6047ad0802 5
RuslanUrya 0:be6047ad0802 6 Servo_9g::Servo_9g (PinName Pin):
RuslanUrya 0:be6047ad0802 7 Servo(Pin)
RuslanUrya 0:be6047ad0802 8 {
RuslanUrya 0:be6047ad0802 9 Servo.period_ms(20);
RuslanUrya 0:be6047ad0802 10 }
RuslanUrya 0:be6047ad0802 11
RuslanUrya 0:be6047ad0802 12 ~Servo_9g(){
RuslanUrya 0:be6047ad0802 13
RuslanUrya 0:be6047ad0802 14 }
RuslanUrya 0:be6047ad0802 15
RuslanUrya 0:be6047ad0802 16 void Servo_9g_Move::start_move_sin(){
RuslanUrya 0:be6047ad0802 17 timer.attach(this, &Servo_9g::calc_n_move, val); //sine period, sec
RuslanUrya 0:be6047ad0802 18 }
RuslanUrya 0:be6047ad0802 19
RuslanUrya 0:be6047ad0802 20 void Servo_9g_Move::calc_n_move(){
RuslanUrya 0:be6047ad0802 21 Servo_9g::move (Servo_9g::next_sin());
RuslanUrya 0:be6047ad0802 22 }
RuslanUrya 0:be6047ad0802 23
RuslanUrya 0:be6047ad0802 24 void Servo_9g_Move::move (float f){
RuslanUrya 0:be6047ad0802 25 Servo = f * val; // duty-cycle, perсents 0..1; посчитанное значение вставится в следующее прерывание
RuslanUrya 0:be6047ad0802 26 }
RuslanUrya 0:be6047ad0802 27
RuslanUrya 0:be6047ad0802 28 float Servo_9g_Move::next_sin(){
RuslanUrya 0:be6047ad0802 29 i += 0.1;
RuslanUrya 0:be6047ad0802 30 if (i > 2) i = 0;
RuslanUrya 0:be6047ad0802 31 f = (sin(i * pi) + 1.0) / 2 + 1; //1..2
RuslanUrya 0:be6047ad0802 32 return (float)f;
RuslanUrya 0:be6047ad0802 33 }
RuslanUrya 0:be6047ad0802 34
RuslanUrya 0:be6047ad0802 35 Servo_9g_CAN::Servo_9g_CAN(PinName servo_pwm, PinName rd, PinName td):Servo_9g_Move(servo_pwm):
RuslanUrya 0:be6047ad0802 36 can(rd, td)
RuslanUrya 0:be6047ad0802 37 {
RuslanUrya 0:be6047ad0802 38
RuslanUrya 0:be6047ad0802 39 }
RuslanUrya 0:be6047ad0802 40
RuslanUrya 0:be6047ad0802 41 Servo_9g_CAN::Servo_9g_CAN(PinName servo_pwm, PinName rd, PinName td, int hz):Servo_9g_Move(servo_pwm):
RuslanUrya 0:be6047ad0802 42 can(rd, td, hz)
RuslanUrya 0:be6047ad0802 43 {
RuslanUrya 0:be6047ad0802 44
RuslanUrya 0:be6047ad0802 45 }