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.
Dependents: CAN_Simple_Publisher CAN_Pub_actuator
MS9g_move_sin.cpp@0:be6047ad0802, 2018-05-01 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |