回答編集履歴
1
サンプル追記
test
CHANGED
@@ -2,3 +2,35 @@
|
|
2
2
|
レベルでなくエッジで考える話でしょう。
|
3
3
|
ホール素子ならチャタリングもないでしょうから、ホール素子の出力の立ち上がりまたは立ち下がりエッジで割り込みを掛けることにすれば、自分でエッジ検出をする必要もないです。
|
4
4
|
割り込みのかかった回数を一秒間数えればよいように思います。
|
5
|
+
|
6
|
+
---
|
7
|
+
単純に割り込み(H->Lへの変化)の回数を数えるサンプル
|
8
|
+
```Arduino
|
9
|
+
const int INP = 3; //入力ピン(UNOでは2と3がピン割り込み対応)
|
10
|
+
|
11
|
+
unsigned long t0;
|
12
|
+
volatile int cnt;
|
13
|
+
|
14
|
+
void countInc() {
|
15
|
+
cnt++;
|
16
|
+
}
|
17
|
+
|
18
|
+
void setup() {
|
19
|
+
Serial.begin(115200);
|
20
|
+
pinMode(INP, INPUT_PULLUP); //PULLUPは必要に応じて
|
21
|
+
attachInterrupt(digitalPinToInterrupt(INP), countInc, FALLING);
|
22
|
+
t0 = millis();
|
23
|
+
}
|
24
|
+
void loop() {
|
25
|
+
unsigned long t = millis();
|
26
|
+
if (t - t0 >= 1000) {
|
27
|
+
Serial.print(t);
|
28
|
+
Serial.print(':');
|
29
|
+
noInterrupts(); //cntの操作の競合を避けるため割り込み禁止
|
30
|
+
Serial.println(cnt);
|
31
|
+
cnt = 0;
|
32
|
+
interrupts();//割り込み再開
|
33
|
+
t0=t;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
```
|