Ryota Nakamura
/
Time_Servo_SG90
Nucleo F303K8とSG90を用いたサーボ信号変更における処理時間の測定
main.cpp@0:e7072f95dcaf, 2017-02-09 (annotated)
- Committer:
- RyotaNakamura
- Date:
- Thu Feb 09 11:00:42 2017 +0000
- Revision:
- 0:e7072f95dcaf
Nucleo F303K8?SG90??????????????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RyotaNakamura | 0:e7072f95dcaf | 1 | #include "mbed.h" |
RyotaNakamura | 0:e7072f95dcaf | 2 | |
RyotaNakamura | 0:e7072f95dcaf | 3 | #define ON 1 |
RyotaNakamura | 0:e7072f95dcaf | 4 | #define OFF 0 |
RyotaNakamura | 0:e7072f95dcaf | 5 | |
RyotaNakamura | 0:e7072f95dcaf | 6 | PwmOut servo1(D10); |
RyotaNakamura | 0:e7072f95dcaf | 7 | Serial pc(USBTX, USBRX); |
RyotaNakamura | 0:e7072f95dcaf | 8 | Timer timer1; |
RyotaNakamura | 0:e7072f95dcaf | 9 | Timer timer2; |
RyotaNakamura | 0:e7072f95dcaf | 10 | |
RyotaNakamura | 0:e7072f95dcaf | 11 | int main() |
RyotaNakamura | 0:e7072f95dcaf | 12 | { |
RyotaNakamura | 0:e7072f95dcaf | 13 | float pwidth; |
RyotaNakamura | 0:e7072f95dcaf | 14 | int miri=1000; |
RyotaNakamura | 0:e7072f95dcaf | 15 | servo1.period_ms(20);// pulse cycle = 20ms |
RyotaNakamura | 0:e7072f95dcaf | 16 | |
RyotaNakamura | 0:e7072f95dcaf | 17 | while(1) { |
RyotaNakamura | 0:e7072f95dcaf | 18 | for(pwidth=0.001; pwidth<=0.002; pwidth+=0.000001) { // 1ms ~ 2ms |
RyotaNakamura | 0:e7072f95dcaf | 19 | timer1.reset(); |
RyotaNakamura | 0:e7072f95dcaf | 20 | timer1.start(); |
RyotaNakamura | 0:e7072f95dcaf | 21 | servo1.pulsewidth(pwidth); // pulse servo out |
RyotaNakamura | 0:e7072f95dcaf | 22 | timer1.stop(); |
RyotaNakamura | 0:e7072f95dcaf | 23 | float t1=timer1.read(); |
RyotaNakamura | 0:e7072f95dcaf | 24 | float time1=t1*miri; |
RyotaNakamura | 0:e7072f95dcaf | 25 | pc.printf("time1= %f ms\n",time1); |
RyotaNakamura | 0:e7072f95dcaf | 26 | wait(0.001); |
RyotaNakamura | 0:e7072f95dcaf | 27 | } |
RyotaNakamura | 0:e7072f95dcaf | 28 | |
RyotaNakamura | 0:e7072f95dcaf | 29 | for(pwidth=0.002; pwidth>=0.001; pwidth-=0.000001) { // 1ms ~ 2ms |
RyotaNakamura | 0:e7072f95dcaf | 30 | timer2.reset(); |
RyotaNakamura | 0:e7072f95dcaf | 31 | timer2.start(); |
RyotaNakamura | 0:e7072f95dcaf | 32 | servo1.pulsewidth(pwidth); // pulse servo out |
RyotaNakamura | 0:e7072f95dcaf | 33 | timer2.stop(); |
RyotaNakamura | 0:e7072f95dcaf | 34 | float t2=timer2.read(); |
RyotaNakamura | 0:e7072f95dcaf | 35 | float time2=t2*miri; |
RyotaNakamura | 0:e7072f95dcaf | 36 | pc.printf("time2= %f ms\n",time2); |
RyotaNakamura | 0:e7072f95dcaf | 37 | wait(0.001); |
RyotaNakamura | 0:e7072f95dcaf | 38 | } |
RyotaNakamura | 0:e7072f95dcaf | 39 | } |
RyotaNakamura | 0:e7072f95dcaf | 40 | } |