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@1:1ec6af6d0c6d, 2018-05-02 (annotated)
- Committer:
- RuslanUrya
- Date:
- Wed May 02 12:19:26 2018 +0000
- Revision:
- 1:1ec6af6d0c6d
- Parent:
- 0:be6047ad0802
- Child:
- 2:3eadad0761e9
errors in CAN-class
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| RuslanUrya | 0:be6047ad0802 | 1 | #include "MS9g_move_sin.h" |
| RuslanUrya | 1:1ec6af6d0c6d | 2 | //class Servo_9g |
| RuslanUrya | 1:1ec6af6d0c6d | 3 | Servo_9g::Servo_9g(){} |
| RuslanUrya | 0:be6047ad0802 | 4 | |
| RuslanUrya | 0:be6047ad0802 | 5 | Servo_9g::Servo_9g (PinName Pin): |
| RuslanUrya | 0:be6047ad0802 | 6 | Servo(Pin) |
| RuslanUrya | 0:be6047ad0802 | 7 | { |
| RuslanUrya | 0:be6047ad0802 | 8 | Servo.period_ms(20); |
| RuslanUrya | 0:be6047ad0802 | 9 | } |
| RuslanUrya | 0:be6047ad0802 | 10 | |
| RuslanUrya | 1:1ec6af6d0c6d | 11 | Servo_9g::~Servo_9g(){ |
| RuslanUrya | 0:be6047ad0802 | 12 | |
| RuslanUrya | 0:be6047ad0802 | 13 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 14 | //end of class Servo_9g |
| RuslanUrya | 0:be6047ad0802 | 15 | |
| RuslanUrya | 1:1ec6af6d0c6d | 16 | //class Servo_9g_Move |
| RuslanUrya | 1:1ec6af6d0c6d | 17 | //Servo_9g_Move::Servo_9g_Move():Servo_9g(){} |
| RuslanUrya | 1:1ec6af6d0c6d | 18 | //Servo_9g_Move::Servo_9g_Move(PinName Pin):Servo_9g(Pin){} |
| RuslanUrya | 1:1ec6af6d0c6d | 19 | Servo_9g_Move::~Servo_9g_Move(){} |
| RuslanUrya | 0:be6047ad0802 | 20 | |
| RuslanUrya | 1:1ec6af6d0c6d | 21 | void Servo_9g_Move::Move (float f){ |
| RuslanUrya | 1:1ec6af6d0c6d | 22 | Servo = f * val; // duty-cycle, perсents 0..1 |
| RuslanUrya | 0:be6047ad0802 | 23 | } |
| RuslanUrya | 0:be6047ad0802 | 24 | |
| RuslanUrya | 1:1ec6af6d0c6d | 25 | void Servo_9g_Move::NextSin(){ |
| RuslanUrya | 0:be6047ad0802 | 26 | i += 0.1; |
| RuslanUrya | 0:be6047ad0802 | 27 | if (i > 2) i = 0; |
| RuslanUrya | 0:be6047ad0802 | 28 | f = (sin(i * pi) + 1.0) / 2 + 1; //1..2 |
| RuslanUrya | 1:1ec6af6d0c6d | 29 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 30 | |
| RuslanUrya | 1:1ec6af6d0c6d | 31 | void Servo_9g_Move::CalCnMove(){ |
| RuslanUrya | 1:1ec6af6d0c6d | 32 | Move((float)f); |
| RuslanUrya | 1:1ec6af6d0c6d | 33 | NextSin(); |
| RuslanUrya | 0:be6047ad0802 | 34 | } |
| RuslanUrya | 0:be6047ad0802 | 35 | |
| RuslanUrya | 1:1ec6af6d0c6d | 36 | void Servo_9g_Move::StartMoveSin(){ |
| RuslanUrya | 1:1ec6af6d0c6d | 37 | timer.attach(this, &Servo_9g_Move::CalCnMove, val); //sine period, sec |
| RuslanUrya | 1:1ec6af6d0c6d | 38 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 39 | //end of class Servo_9g_Move |
| RuslanUrya | 1:1ec6af6d0c6d | 40 | |
| RuslanUrya | 1:1ec6af6d0c6d | 41 | //class Servo_9g_CAN |
| RuslanUrya | 1:1ec6af6d0c6d | 42 | Servo_9g_CAN::Servo_9g_CAN(PinName rd, PinName td):Servo_9g_Move(): |
| RuslanUrya | 1:1ec6af6d0c6d | 43 | can(rd, td) |
| RuslanUrya | 1:1ec6af6d0c6d | 44 | { |
| RuslanUrya | 1:1ec6af6d0c6d | 45 | func.id = 1; |
| RuslanUrya | 1:1ec6af6d0c6d | 46 | func.len = 4; |
| RuslanUrya | 1:1ec6af6d0c6d | 47 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 48 | Servo_9g_CAN::Servo_9g_CAN(PinName rd, PinName td, int hz):Servo_9g_Move(): |
| RuslanUrya | 1:1ec6af6d0c6d | 49 | can(rd, td, hz) |
| RuslanUrya | 1:1ec6af6d0c6d | 50 | { |
| RuslanUrya | 1:1ec6af6d0c6d | 51 | func.id = 1; |
| RuslanUrya | 1:1ec6af6d0c6d | 52 | func.len = 4; |
| RuslanUrya | 1:1ec6af6d0c6d | 53 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 54 | |
| RuslanUrya | 0:be6047ad0802 | 55 | Servo_9g_CAN::Servo_9g_CAN(PinName servo_pwm, PinName rd, PinName td):Servo_9g_Move(servo_pwm): |
| RuslanUrya | 0:be6047ad0802 | 56 | can(rd, td) |
| RuslanUrya | 0:be6047ad0802 | 57 | { |
| RuslanUrya | 1:1ec6af6d0c6d | 58 | func.id = 1; |
| RuslanUrya | 1:1ec6af6d0c6d | 59 | func.len = 4; |
| RuslanUrya | 0:be6047ad0802 | 60 | } |
| RuslanUrya | 0:be6047ad0802 | 61 | |
| RuslanUrya | 0:be6047ad0802 | 62 | Servo_9g_CAN::Servo_9g_CAN(PinName servo_pwm, PinName rd, PinName td, int hz):Servo_9g_Move(servo_pwm): |
| RuslanUrya | 0:be6047ad0802 | 63 | can(rd, td, hz) |
| RuslanUrya | 0:be6047ad0802 | 64 | { |
| RuslanUrya | 1:1ec6af6d0c6d | 65 | func.id = 1; |
| RuslanUrya | 1:1ec6af6d0c6d | 66 | func.len = 4; |
| RuslanUrya | 1:1ec6af6d0c6d | 67 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 68 | |
| RuslanUrya | 1:1ec6af6d0c6d | 69 | Servo_9g_CAN::~Servo_9g_CAN(){ |
| RuslanUrya | 0:be6047ad0802 | 70 | |
| RuslanUrya | 1:1ec6af6d0c6d | 71 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 72 | |
| RuslanUrya | 1:1ec6af6d0c6d | 73 | void Servo_9g_CAN::SendNextSin(){ |
| RuslanUrya | 1:1ec6af6d0c6d | 74 | NextSin(); |
| RuslanUrya | 1:1ec6af6d0c6d | 75 | func.data = &f; //возможно func.data = &(const char)f; или func.data = (const char*)&f; |
| RuslanUrya | 1:1ec6af6d0c6d | 76 | can.write(func); |
| RuslanUrya | 1:1ec6af6d0c6d | 77 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 78 | |
| RuslanUrya | 1:1ec6af6d0c6d | 79 | void Servo_9g_CAN::ReceiveServo(){ |
| RuslanUrya | 1:1ec6af6d0c6d | 80 | if(can.read(func)){ |
| RuslanUrya | 1:1ec6af6d0c6d | 81 | Move((float)func.data); //по идее функ- массив, значит имя-указатель |
| RuslanUrya | 1:1ec6af6d0c6d | 82 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 83 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 84 | |
| RuslanUrya | 1:1ec6af6d0c6d | 85 | void Servo_9g_CAN::SendSin(){ |
| RuslanUrya | 1:1ec6af6d0c6d | 86 | timer.attach(this, &Servo_9g_CAN::SendNextSin, val); |
| RuslanUrya | 1:1ec6af6d0c6d | 87 | } |
| RuslanUrya | 1:1ec6af6d0c6d | 88 | //end of class Servo_9g_CAN |