質問するログイン新規登録

回答編集履歴

1

コードが不完全だったので修正した

2017/11/22 09:08

投稿

coco_bauer
coco_bauer

スコア6921

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 last
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
- if(Signal > Threshold){
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
  ```