/* Hartslagmeter met behulp van een Puls Sensor * */ #define array_lengte 500 #define top_verschil 6 #define dal_verschil 3 // Variables int pulse_sensor_pin = 0; // Puls Sensor int LED13 = 13; // on-board LED int signaal_sterkte[array_lengte]; // Array om de gemmiddelde signaal sterkte te berekenen int signaal_sterkte_index; // index waar zojuist gemeten signaal wordt opgeslagen int signaal,signaal_gemiddelde; // holds the incoming raw data. signaal value can range from 0-1024 boolean puls_top; unsigned long vorige_puls_top_tijd, puls_top_tijd; /***************************************************************************** * The SetUp Function: *****************************************************************************/ void setup() { pinMode(LED13,OUTPUT); // pin that will blink to your heartbeat! Serial.begin(115200); // Set's up Serial Communication at certain speed. for (signaal_sterkte_index=0; signaal_sterkte_index signaal_gemiddelde+top_verschil) // puls top gedetecteerd, misshien een nieuwe puls top { if (!puls_top) // Alleen een nieuwe puls top na een puls dal, anders dezelfde puls top { puls_top = true; // nieuwe puls top puls_top_tijd = millis(); // administreer en bereken de hartslag digitalWrite(LED13,HIGH); Serial.print(" puls_top = "); Serial.print(60000/(puls_top_tijd-vorige_puls_top_tijd)); Serial.print(" tijd = "); Serial.println(millis()); vorige_puls_top_tijd = puls_top_tijd; } } if(signaal < signaal_gemiddelde-dal_verschil) // puls dal gedetecteerd { puls_top = false; // administreer digitalWrite(LED13,LOW); // zet onboard LED (weer) uit } delay(20); // deze delay zorgt er voor dat we ongeveer 50 keer per seconde meten. } // als we deze delay weglaten dan moet de signaal_sterkte array veel groter worden.