Buonasera, mi sto dilettando nel rilevare il battito cardiaco attraverso un semplice sensore infrarosso composto da emettitore e ricevitore, collegato ad arduino in questo modo:
Attualmente, il codice che ho trovato e leggerissimamente modificato è questo:
const int CardioPin = 2;
const int ledPin = 13;
long oldMillis;
long oldMillis_antiBounce;
byte contatore = 0;
byte stato = 0;
byte ultimoStato = 0;
void setup() {
pinMode(CardioPin, INPUT);
pinMode(ledPin, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
oldMillis = millis();
oldMillis_antiBounce = oldMillis;
}
void loop() {
stato = digitalRead(CardioPin);
if (stato != ultimoStato) {
if (stato == HIGH) {
//sistole...fronte di salita...
digitalWrite(ledPin, HIGH);
if ( millis()- oldMillis_antiBounce > 10)
{ // se impiega meno di 10 millisecondi per cambiare di stato è un rimbalzo e non lo conto
contatore ++;
oldMillis_antiBounce = millis();
};
} else {
// else stato = low significa che sono in diastole
digitalWrite(ledPin, LOW);
}
ultimoStato = stato; // lo stato è variato
}
if ( millis()- oldMillis > 15000) {
//15 secodi di statistica... calcolo media
Serial.print ("bpm:");
Serial.println ( contatore * 4);
Serial.print("Stato");
Serial.println(stato);
contatore = 0;
oldMillis = millis();
oldMillis_antiBounce = oldMillis;
}
}
Il problema è che non mi rileva i battiti del cuore, anzi, mi indica bpm = 0 e stato = 0.
Potreste darmi qualche dritta?