Giter VIP home page Giter VIP logo

pulsesensor_spark's Introduction

PulseSensor Library adapted for Spark Core by Paul Kourany, June 2015 from:

Pulse Sensor Amped 1.4

Works with Particle Core, Photon and Electron !!!

Update Oct 24/2016

Removed the outdated SparkIntervalTimer library code so user can attach the latest Build (IDE) version.

In order for this app to compile correctly, the following Partible Build (Web IDE) library MUST be attched:

  • SparkIntervalTimer

This code is for Pulse Sensor Amped by Joel Murphy and Yury Gitman www.pulsesensor.com

Pulse Sensor purple wire goes to Analog Pin A2 (see PulseSensor_Spark.h for details)

Pulse Sensor sample aquisition and processing happens in the background via a hardware Timer interrupt. 2mS sample rate. PWM on selectable pins A0 and A1 will not work when using this code, because the first allocated timer is TIMR2! The following variables are automatically updated: Signal : int that holds the analog signal data straight from the sensor. updated every 2mS. IBI : int that holds the time interval between beats. 2mS resolution. BPM : int that holds the heart rate value, derived every beat, from averaging previous 10 IBI values. QS : boolean that is made true whenever Pulse is found and BPM is updated. User must reset. Pulse : boolean that is true when a heartbeat is sensed then false in time with pin13 LED going out.

This code is designed with output serial data to Processing sketch "PulseSensorAmped_Processing-xx" The Processing sketch is a simple data visualizer. All the work to find the heartbeat and determine the heartrate happens in the code below. Pin D7 LED (onboard LED) will blink with heartbeat. If you want to use pin D7 for something else, specifiy different pin in Interrupt.h It will also fade an LED on pin fadePin with every beat. Put an LED and series resistor from fadePin to GND. Check here for detailed code walkthrough: http://pulsesensor.myshopify.com/pages/pulse-sensor-amped-arduino-v1dot1

New to v1.5 (Sept 2015)

Works with Paritcle Core and Photon!

New to v1.4

ASCII Serial Monitor Visuals - See the User's Pulse & BPM via the Serial port. Open a serial monitor for this ASCII visualization.

To Turn On ASCII Visualizer:

static boolean serialVisual = false;   // Set to 'false' by Default. 

to:

static boolean serialVisual = true;   // Re-set to 'true' to do ASCII Visual Pulse  : ) 

That's it's! Upload and open your Serial Monitor.

Pulse Sensor Amped 1.4 by Joel Murphy and Yury Gitman http://www.pulsesensor.com

pulsesensor_spark's People

Contributors

pkourany avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

pulsesensor_spark's Issues

'SysInterrupt_TIM3_Update' was not declared in this scope

Veryfing code using this library in Particle Build fails with this error:

PulseSensor_Spark/SparkIntervalTimer.h:128:30: error: 'SysInterrupt_TIM3_Update' was not declared in this scope
   if (!attachSystemInterrupt(SysInterrupt_TIM3_Update, Wiring_TIM3_Interrupt_Handler_override)) 

'SysInterrupt_TIM2' was not declared in this scope

Veryfing code using this library in Particle Build fails with this error:

PulseSensor_Spark/SparkIntervalTimer.h:121:30: error: 'SysInterrupt_TIM2' was not declared in this scope
   if (!attachSystemInterrupt(SysInterrupt_TIM2, Wiring_TIM2_Interrupt_Handler_override)) 

Particle framework now also features a `Signal` class

When building the provided sample these errors occure (tested with 0.8.0-rc.1)

pulsesensoramped_arduino_1dot4.ino: In function 'void serialOutput()':
pulsesensoramped_arduino_1dot4.ino:96:35: error: reference to 'Signal' is ambiguous
pulsesensoramped_arduino_1dot4.ino:44:21: note: candidates are: volatile int Signal
In file included from ../wiring/inc/spark_wiring_cellular_printable.h:26:0,
                 from ../wiring/inc/spark_wiring.h:41,
                 from ./inc/application.h:40,
                 from src/pulsesensoramped_arduino_1dot4.cpp:1:
../wiring/inc/spark_wiring_signal.h:24:7: note:                 class particle::Signal
 class Signal {
       ^
pulsesensoramped_arduino_1dot4.ino:98:25: error: reference to 'Signal' is ambiguous
pulsesensoramped_arduino_1dot4.ino:44:21: note: candidates are: volatile int Signal
In file included from ../wiring/inc/spark_wiring_cellular_printable.h:26:0,
                 from ../wiring/inc/spark_wiring.h:41,
                 from ./inc/application.h:40,
                 from src/pulsesensoramped_arduino_1dot4.cpp:1:
../wiring/inc/spark_wiring_signal.h:24:7: note:                 class particle::Signal
 class Signal {
       ^

'SysInterrupt_TIM3' was not declared in this scope

Veryfing code using this library in Particle Build fails with this error:

PulseSensor_Spark/SparkIntervalTimer.h:122:30: error: 'SysInterrupt_TIM3' was not declared in this scope
   if (!attachSystemInterrupt(SysInterrupt_TIM3, Wiring_TIM3_Interrupt_Handler_override)) 

Problem when there is no beat

Hi there! I am using Photon and Pulse Sensor for a project and the code isn't working as expected when I touch the sensor after a while. You need to touch the sensor twice in order to start calculating BPM again and sometimes it isn't working at all. I thought that the problem was that in the part of the code that 2.5 seconds without a beat have passed P,T and threshold are reinitialized to 512 and not 2048, which is their default value for Photon. I changed them but now BPM is calculated constantly, even when the sensor is not being touched.
Could you help me with this issue?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.