回答編集履歴

1

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

2017/11/22 09:08

投稿

coco_bauer
coco_bauer

スコア6915

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 last
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