回答編集履歴
1
コードが不完全だったので修正した
answer
CHANGED
@@ -12,7 +12,11 @@
|
|
12
12
|
int Signal;
|
13
13
|
int Threshold = 550;
|
14
14
|
int status=0; // 0:初期状態(測定開始前)、1:測定中、2:測定終了
|
15
|
+
int lastSignal = 0;
|
16
|
+
int pulseCount; //脈拍数
|
15
|
-
int
|
17
|
+
int startTime;
|
18
|
+
int endTime;
|
19
|
+
float pulse;
|
16
20
|
|
17
21
|
// The SetUp Function:
|
18
22
|
|
@@ -30,25 +34,34 @@
|
|
30
34
|
|
31
35
|
// Serial.println(Signal); //測定に影響するかもしれないので、コメントアウト
|
32
36
|
|
37
|
+
if(Signal > Threshold){
|
33
38
|
|
34
|
-
|
39
|
+
if (lastSignal=0) //脈拍の始まり {
|
35
|
-
|
40
|
+
if (status=0) { //最初の脈拍
|
41
|
+
startTime = millis(); //開始時間
|
42
|
+
pulseCount=0;
|
43
|
+
status=1;
|
44
|
+
} else if (status=1) {
|
45
|
+
pulseCount=pulseCount+1; //脈拍数を増やす
|
46
|
+
if (pulseCount=15){ //15回目の脈拍
|
47
|
+
endTime = millis(); //終了時間
|
48
|
+
// 脈拍は、15 * 1分 / (15回の脈拍に要した時間)
|
49
|
+
pulse = 15 * (60000 / (endTime-startTime)); //millisはミリ秒の値を返す。1分をミリ秒で表すと60000
|
50
|
+
Serial.printf( F("%f pulses/sec."),Signal); //脈拍をシリアルに書き出す
|
51
|
+
}
|
52
|
+
status=2;
|
53
|
+
}
|
54
|
+
lastSignal = 1
|
36
55
|
//digitalWrite(LED13,HIGH);
|
37
|
-
digitalWrite(in1Pin,LOW);
|
56
|
+
//digitalWrite(in1Pin,LOW);
|
38
|
-
|
57
|
+
}
|
39
58
|
} else {
|
59
|
+
lastSignal = 0
|
40
60
|
|
41
61
|
//digitalWrite(LED13,LOW);
|
42
|
-
digitalWrite(in1Pin,HIGH);
|
62
|
+
//digitalWrite(in1Pin,HIGH);
|
43
|
-
|
44
63
|
}
|
45
64
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
65
|
delay(10);
|
51
|
-
|
52
|
-
|
53
66
|
}
|
54
67
|
```
|