questa è una bozza di contagiri
non capisco per quale motivo ma prima di immettere il millis il gparz contava esattamente il numero di volte in cui mettevo in high il sensgiri mentre ora anche escludendo l'azzeramento del contatore e mantenendo in HIGH il pin mi conta anche 2 HIGH in una sessione
int sensgiri = 2;
int giri;
int giri2;
int rpm;
int gparz;
unsigned long tpausa = 1000;
unsigned long tiniziale = 0;
void setup()
{
pinMode(sensgiri, INPUT);
Serial.begin(9600);
}
void loop()
{
giri = digitalRead(sensgiri);
if (giri == HIGH) giri2++;
if (giri == LOW) giri2 = 0;
if (millis() - tiniziale < tpausa) {
if (giri2 == 1) gparz++;
}
if (millis() - tiniziale >= tpausa) {
rpm = gparz * 60;
Serial.println(gparz);
tiniziale = millis();
gparz = 0;
rpm = 0;
}
}
questo è il risultato del serial monitor escludendo l'azzeramento di gparz
0
1
3
4
5
7
8
9
10
12
13
14
15
17
18
19
21
22
23
24
26
27
28
30
31
32
33
35
36
37
38
40
41
42
44
45
46
47
49
50
51
53
54
55
56
58
59
come è ben visibile ogni un tot letture ottengo una doppia lettura