From 8c55b54969998e0bf8c3937977802a875a921bfa Mon Sep 17 00:00:00 2001 From: Zion Orent Date: Fri, 27 Mar 2015 10:07:29 -0400 Subject: [PATCH] groveehr: python example and js modification for groveehr heart-rate sensor Signed-off-by: Zion Orent Signed-off-by: Mihai Tudor Panu --- examples/javascript/groveehr.js | 22 ++++++----- examples/python/groveehr.py | 68 +++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 examples/python/groveehr.py diff --git a/examples/javascript/groveehr.js b/examples/javascript/groveehr.js index 2f48b2bb..7a9902b8 100644 --- a/examples/javascript/groveehr.js +++ b/examples/javascript/groveehr.js @@ -1,6 +1,5 @@ /*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ -/*global */ /* * Author: Zion Orent * Copyright (c) 2014 Intel Corporation. @@ -35,26 +34,31 @@ myHeartRateSensor.clearBeatCounter(); myHeartRateSensor.initClock(); myHeartRateSensor.startBeatCounter(); -setInterval(readHeartRate, 1000); - -function readHeartRate() +var millis, beats, hr; +var myInterval = setInterval(function() { // we grab these just for display purposes in this example - var millis = myHeartRateSensor.getMillis(); - var beats = myHeartRateSensor.beatCounter(); + millis = myHeartRateSensor.getMillis(); + beats = myHeartRateSensor.beatCounter(); // heartRate() requires that at least 5 seconds pass before // returning anything other than 0 - var hr = myHeartRateSensor.heartRate(); + hr = myHeartRateSensor.heartRate(); // output milliseconds passed, beat count, and computed heart rate console.log("Millis: " + millis + " Beats: " + beats + " Heart Rate: " + hr); -} +}, 1000); // Print message when exiting process.on('SIGINT', function() { - console.log("Exiting..."); + clearInterval(myInterval); + myHeartRateSensor.stopBeatCounter(); + myHeartRateSensor = null + heartRateSensor.cleanUp(); + heartRateSensor = null; + + console.log("Exiting"); process.exit(0); }); diff --git a/examples/python/groveehr.py b/examples/python/groveehr.py new file mode 100644 index 00000000..3dd0ee22 --- /dev/null +++ b/examples/python/groveehr.py @@ -0,0 +1,68 @@ +#!/usr/bin/python +# Author: Zion Orent +# Copyright (c) 2015 Intel Corporation. +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +import time, sys, signal, atexit +import pyupm_groveehr as upmGroveehr + +# Instantiate a Grove Ear-clip Heart Rate sensor on digital pin D2 +myHeartRateSensor = upmGroveehr.GroveEHR(2) + + +## Exit handlers ## +# This stops python from printing a stacktrace when you hit control-C +def SIGINTHandler(signum, frame): + raise SystemExit + +# This lets you run code on exit, +# including functions from myHeartRateSensor +def exitHandler(): + myHeartRateSensor.stopBeatCounter() + print "Exiting" + sys.exit(0) + +# Register exit handlers +atexit.register(exitHandler) +signal.signal(signal.SIGINT, SIGINTHandler) + + +# set the beat counter to 0, init the clock and start counting beats +myHeartRateSensor.clearBeatCounter() +myHeartRateSensor.initClock() +myHeartRateSensor.startBeatCounter() + +while(1): + # we grab these (millis and flowCount) just for display + # purposes in this example + millis = myHeartRateSensor.getMillis() + beats = myHeartRateSensor.beatCounter() + + # heartRate() requires that at least 5 seconds pass before + # returning anything other than 0 + fr = myHeartRateSensor.heartRate() + + # output milliseconds passed, beat count, and computed heart rate + outputStr = "Millis: {0} Beats: {1} Heart Rate: {2}".format( + millis, beats, fr) + print outputStr + time.sleep(1)