Руслан Урядинский / Mbed 2 deprecated Servo_move_sin

Dependencies:   mbed-STM32F103C8T6 mbed

Committer:
RuslanUrya
Date:
Wed Apr 18 12:24:46 2018 +0000
Revision:
5:e86eda00ef3f
Parent:
4:2196462a17f5
Child:
6:c8265ecd2d1f
is worked. Need to adjust the range of duty cycle

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RuslanUrya 0:fb723d2f5d7e 1 #include "mbed.h"
RuslanUrya 0:fb723d2f5d7e 2 #include "stm32f103c8t6.h"
RuslanUrya 0:fb723d2f5d7e 3 #define val 0.05 // percents in step / 100
RuslanUrya 5:e86eda00ef3f 4 #define pi 3.1415
RuslanUrya 0:fb723d2f5d7e 5
RuslanUrya 5:e86eda00ef3f 6 PwmOut Servo (PA_8);
RuslanUrya 5:e86eda00ef3f 7 DigitalOut myled(PC_13);
RuslanUrya 4:2196462a17f5 8 Ticker timer;
RuslanUrya 0:fb723d2f5d7e 9
RuslanUrya 0:fb723d2f5d7e 10
RuslanUrya 5:e86eda00ef3f 11 double f = 0; //first period
RuslanUrya 5:e86eda00ef3f 12 double i = 0;
RuslanUrya 0:fb723d2f5d7e 13
RuslanUrya 0:fb723d2f5d7e 14 void sinus (){
RuslanUrya 5:e86eda00ef3f 15 Servo = (float)f * val; // duty-cycle, perсents 0..1; посчитанное значение вставится в следующее прерывание
RuslanUrya 5:e86eda00ef3f 16 i += 0.1;
RuslanUrya 5:e86eda00ef3f 17 if (i > 2) i = 0;
RuslanUrya 5:e86eda00ef3f 18 f = (sin(i * pi) + 1.0) / 2 + 1; //1..2
RuslanUrya 0:fb723d2f5d7e 19 }
RuslanUrya 0:fb723d2f5d7e 20
RuslanUrya 0:fb723d2f5d7e 21 int main() {
RuslanUrya 0:fb723d2f5d7e 22 confSysClock();
RuslanUrya 0:fb723d2f5d7e 23 Servo.period_ms(20);
RuslanUrya 5:e86eda00ef3f 24 timer.attach(&sinus, val); //sine period, sec
RuslanUrya 0:fb723d2f5d7e 25 while(1) {
RuslanUrya 5:e86eda00ef3f 26 myled = !myled;
RuslanUrya 5:e86eda00ef3f 27 wait(0.5);
RuslanUrya 0:fb723d2f5d7e 28 }
RuslanUrya 0:fb723d2f5d7e 29 }