回転数計のプログラムです。

Dependencies:   mbed

Committer:
YusukeWakuta
Date:
Sat Jan 07 07:20:50 2017 +0000
Revision:
1:3778bb7e3cf9
Parent:
0:81114af7e3d0
????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YusukeWakuta 0:81114af7e3d0 1 #include "mbed.h"
YusukeWakuta 0:81114af7e3d0 2 #define SLIT_NUM 70
YusukeWakuta 0:81114af7e3d0 3 #define COUNT_NUM 10
YusukeWakuta 0:81114af7e3d0 4
YusukeWakuta 0:81114af7e3d0 5 Timer timer;
YusukeWakuta 0:81114af7e3d0 6 PwmOut pwm(p21);
YusukeWakuta 0:81114af7e3d0 7 InterruptIn Photo_int(p30);
YusukeWakuta 0:81114af7e3d0 8
YusukeWakuta 0:81114af7e3d0 9 int counter = 0;
YusukeWakuta 0:81114af7e3d0 10 int Cadence = 0;
YusukeWakuta 0:81114af7e3d0 11 int beforetime = 0;
YusukeWakuta 0:81114af7e3d0 12 int temp_time = 0;
YusukeWakuta 0:81114af7e3d0 13
YusukeWakuta 0:81114af7e3d0 14 double calcPulse(int deg)
YusukeWakuta 0:81114af7e3d0 15 {
YusukeWakuta 0:81114af7e3d0 16 return (0.00093+(deg/180.0)*(0.00235-0.00077));
YusukeWakuta 0:81114af7e3d0 17 }
YusukeWakuta 0:81114af7e3d0 18
YusukeWakuta 0:81114af7e3d0 19 void servo(int d)
YusukeWakuta 0:81114af7e3d0 20 {
YusukeWakuta 0:81114af7e3d0 21 if(d < 70)
YusukeWakuta 0:81114af7e3d0 22 pwm.pulsewidth_us(0);
YusukeWakuta 0:81114af7e3d0 23 if(d > 110)
YusukeWakuta 0:81114af7e3d0 24 pwm.pulsewidth_us(180);
YusukeWakuta 0:81114af7e3d0 25 else
YusukeWakuta 0:81114af7e3d0 26 pwm.pulsewidth_us((d - 70) * (180 / 40));
YusukeWakuta 0:81114af7e3d0 27
YusukeWakuta 0:81114af7e3d0 28
YusukeWakuta 0:81114af7e3d0 29 }
YusukeWakuta 0:81114af7e3d0 30 void Photo() {
YusukeWakuta 0:81114af7e3d0 31 counter++;
YusukeWakuta 0:81114af7e3d0 32 }
YusukeWakuta 0:81114af7e3d0 33
YusukeWakuta 0:81114af7e3d0 34 int main() {
YusukeWakuta 1:3778bb7e3cf9 35 Photo_int.fall(Photo);
YusukeWakuta 0:81114af7e3d0 36 timer.start();
YusukeWakuta 0:81114af7e3d0 37 while(1) {
YusukeWakuta 0:81114af7e3d0 38 if(counter >= COUNT_NUM) {
YusukeWakuta 0:81114af7e3d0 39 temp_time = timer.read_ms();
YusukeWakuta 0:81114af7e3d0 40 Cadence = (60 / ((SLIT_NUM / COUNT_NUM) * (temp_time) - beforetime)) * COUNT_NUM;
YusukeWakuta 0:81114af7e3d0 41 beforetime = temp_time;
YusukeWakuta 0:81114af7e3d0 42 counter = 0;
YusukeWakuta 0:81114af7e3d0 43
YusukeWakuta 0:81114af7e3d0 44 }
YusukeWakuta 1:3778bb7e3cf9 45 servo(Cadence);
YusukeWakuta 0:81114af7e3d0 46 }
YusukeWakuta 1:3778bb7e3cf9 47
YusukeWakuta 0:81114af7e3d0 48
YusukeWakuta 0:81114af7e3d0 49 }