Arduino - Simple Heart Beat Monitor With LCD1602A Using the KY-039


Introduction: Arduino - Simple Heart Beat Monitor With LCD1602A Using the KY-039

About: Hello world! I make simple & Advanced projects for people who want to learn programming and electronics. Most of my Instructables are about arduino and the wide range of sensors you can use with it. I ma...

Hello again! Today i made a example for the KY-039.

I had a hard time getting this sensor to work, then i found out i am not the only one having a hard time with it.

Anyways i somehow got it to work with someone's code So i did not wrote this one,

the code did not work at all at first but it seems it does work now.

Anyways IF someone creates something perfectly working with it then Please let me know.

Step 1: Schematic Code & Parts List.

Parts List.

  1. Arduino Uno, I used the robotdyn uno.
  2. KY-039 Heart beat sensor.
  3. 10k Potentiometer.
  4. LCD 1602 A (You can also use one with a I2C, i pre-set the lines in the code)
  5. Jumper wires. MM/FF/MF

Good luck.



    • Water Contest

      Water Contest
    • Creative Misuse Contest

      Creative Misuse Contest
    • Clocks Contest

      Clocks Contest

    9 Discussions

    The sensor reads the amount of infra red light. Nothing more. The rest is in the code. You might have a lot of infra red light around you. I tested the sensor while the lights were on in my room. The lights flicker with 50 Hz (Finland). This I could see in the output from the sensor. So to get a good reading from the sensor, I calculated the average of all readings during a 20 ms period. Plotting a curve of the averages I got, created a nice graph showing how my blood vessels in my finger tips pulsed with my heartbeats. If there are other significant infra red noise sources, you might need to smoothen the graph further. After that it's about recognising rising slopes or peaks or whatever looks easiest to get the rate. Some count beats in a 15 s period and multiply it with 4 to get the BPM. I simply measured the milliseconds between each beat and averaged the resulting BPM with two or three previous ones.
    So the sensor doesn't give you a BPM value. It only gives a value telling how much IR the photo transistor receives.

    What's purpose of making the program so complicated where it only display the value of analogRead(A0) / 10 ???

    1 reply

    Did you get the reason

    if got please explain me

    on 5v and GND why are there multiplen wires plugged in?


    1 year ago

    im new to arduino, in what folder should i put the file? because each time i tried to compile an error come out 'no such file or directory'

    I am having an issue that when ever i let go of the Heartbeat sensor it stays at "4"... Any suggestions for a fix?

    I will dig into it, and see how to make it work properly. BEcause everyone seems to have problems with this so called heart beat sensor.

    I know these sensors are not so super... But I am planning to fabricate my own sensor for this.