回答編集履歴
1
コードが不完全だったので修正した
test
CHANGED
@@ -26,7 +26,15 @@
|
|
26
26
|
|
27
27
|
int status=0; // 0:初期状態(測定開始前)、1:測定中、2:測定終了
|
28
28
|
|
29
|
+
int lastSignal = 0;
|
30
|
+
|
31
|
+
int pulseCount; //脈拍数
|
32
|
+
|
29
|
-
int
|
33
|
+
int startTime;
|
34
|
+
|
35
|
+
int endTime;
|
36
|
+
|
37
|
+
float pulse;
|
30
38
|
|
31
39
|
|
32
40
|
|
@@ -62,45 +70,63 @@
|
|
62
70
|
|
63
71
|
|
64
72
|
|
65
|
-
|
66
|
-
|
67
|
-
if(Signal > Threshold){
|
73
|
+
if(Signal > Threshold){
|
68
74
|
|
69
75
|
|
70
76
|
|
77
|
+
if (lastSignal=0) //脈拍の始まり {
|
78
|
+
|
79
|
+
if (status=0) { //最初の脈拍
|
80
|
+
|
81
|
+
startTime = millis(); //開始時間
|
82
|
+
|
83
|
+
pulseCount=0;
|
84
|
+
|
85
|
+
status=1;
|
86
|
+
|
87
|
+
} else if (status=1) {
|
88
|
+
|
89
|
+
pulseCount=pulseCount+1; //脈拍数を増やす
|
90
|
+
|
91
|
+
if (pulseCount=15){ //15回目の脈拍
|
92
|
+
|
93
|
+
endTime = millis(); //終了時間
|
94
|
+
|
95
|
+
// 脈拍は、15 * 1分 / (15回の脈拍に要した時間)
|
96
|
+
|
97
|
+
pulse = 15 * (60000 / (endTime-startTime)); //millisはミリ秒の値を返す。1分をミリ秒で表すと60000
|
98
|
+
|
99
|
+
Serial.printf( F("%f pulses/sec."),Signal); //脈拍をシリアルに書き出す
|
100
|
+
|
101
|
+
}
|
102
|
+
|
103
|
+
status=2;
|
104
|
+
|
105
|
+
}
|
106
|
+
|
107
|
+
lastSignal = 1
|
108
|
+
|
71
109
|
//digitalWrite(LED13,HIGH);
|
72
110
|
|
73
|
-
digitalWrite(in1Pin,LOW);
|
111
|
+
//digitalWrite(in1Pin,LOW);
|
74
112
|
|
75
|
-
|
113
|
+
}
|
76
114
|
|
77
115
|
} else {
|
116
|
+
|
117
|
+
lastSignal = 0
|
78
118
|
|
79
119
|
|
80
120
|
|
81
121
|
//digitalWrite(LED13,LOW);
|
82
122
|
|
83
|
-
digitalWrite(in1Pin,HIGH);
|
123
|
+
//digitalWrite(in1Pin,HIGH);
|
84
|
-
|
85
|
-
|
86
124
|
|
87
125
|
}
|
88
126
|
|
89
127
|
|
90
128
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
129
|
delay(10);
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
130
|
|
105
131
|
}
|
106
132
|
|