PulseSensor Arduino code for BPM and Processing-Visualizer
Clone or Downloadbutton above and download the zip, or if you are a github user, clone this repo, or fork it!
Double-click on PulseSensorAmpedArduino1.5.0.ino
Or, 0pen project in Arduino via *File > Sketchbook > PulseSensorAmpedArduino-Master > PulseSensorAmpedArduino1.5.0.ino
|PulseSensor Cable Color|
|RED||5V or 3V
|PURPLE||A0 (Analog Pin Zero)|
|What it does|
|Signal||Int that holds raw Analog Input data on Pin 0, the PulseSensor's Purple Cable. It's updated every 2mS|
|BPM||Int that holds the heart-rate value, derived every beat, from averaging previous 10 IBI values|
|IBI||Int that holds the time interval between beats|
|Pulse||Boolean that is true when a heartbeat is sensed. It's false other times. It controls LED Pin 13.|
|QS||Boolean that is true whenever Pulse is found and BPM is updated. User must reset.|
This Arduino Sketch works with:
Follow the links above to learn more about the Processing Visualizer and Mac App. This Read Me will cover how to view your pulse wave and other data with the Arduino Serial Plotter. There is a variable in the Pulse Sensor Amped Arduino Sketch that determines how the serial output is formatted. The variable is called
outputType, and there are two options for setting this variable:
SERIAL_PLOTTER. By default,
outputTypeis set to
If you want to use the Serial Plotter, upload the Sketch to your Arduino microcontroller, and then select
Tools > Serial Plotter.
When you turn on the Plotter, make sure that the baud rate is set to 115200. Make this adjustment with the lower right corner menu selector. You will see three traces in the Arduino Serial Plotter. The red trace is your pulse wave data from the
Signalvariable. The yellow trace is your
IBI, or the time between each beat. The blue trace is your
BPMor your Beats Per Minute.
If you only want to see the pulse wave
Signaldata, then you can edit the Arduino Sketch. In the
AllSerialHandling.inotab, simply comment out the lines shown below by inserting
//in the beginning of the line.
Now, when you run the Serial Plotter, you will see a blue pulse waveform only!
There is a tab in the Arduino code called
Timer_Interrupt_Notes. This page describes how to set up the timed interrupt depending on which hardware you are using, and what other things you may want to do with your sketch. We are using a hardware timer on the micrcontroller to make sure that our Pulse Sensor samples are taken at a consistent rate. That makes our data extra scientific! Please read it carefully!
PWM on pins 3 and 11 will not work when using this code, because we are using Timer 2! 🤷♂️🤷♀️
|Disables PWM ON Arduino PINS|
|TIMER2||3 AND 11|
It's important to protect the Pulse Sensor from the oils and sweat that your fingertips and earlobes and other body parts make. That stuff can adversely affect the signal quality. Also, it's important to protect you from the electricity that makes the Pulse Sensor work! To this end, we have provided clear vinyl stickers that fit perfectly on the face of the Pulse Sensor. Peel one off, and press it firmly on the front side of your Pulse Sensor.
Having trouble making heads or tails of what is wrong?
Check your raw signal with this project: WorldFamousElectronics/PulseSensorStarterProject