Project Hub
Heart Rate Monitor
❤️

Heart Rate Monitor

Measure BPM with a pulse sensor on the OLED.

advanced60 min

Components Needed

Arduino UNO
Pulse sensor
0.96" I2C OLED

Circuit Diagram & Wiring

Add your circuit diagram image here.

  1. Pulse sensor signal → A0, VCC → 3.3V, GND → GND.
  2. OLED SDA → A4, SCL → A5.

Arduino Sketch (.ino)

heart-rate.ino
<span style="color:#f97583">#includespan> &lt;Wire.h&gt;
<span style="color:#f97583">#includespan> &lt;Adafruit_SSD1306.h&gt;

Adafruit_SSD1306 oled(<span style="color:#79b8ff">128span>, <span style="color:#79b8ff">64span>, &amp;Wire, -<span style="color:#79b8ff">1span>);
int threshold = <span style="color:#79b8ff">550span>;
unsigned long lastBeat = <span style="color:#79b8ff">0span>;
int bpm = <span style="color:#79b8ff">0span>;

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  Serial.begin(<span style="color:#79b8ff">9600span>);
}

void loop() {
  int v = analogRead(A0);
  unsigned long now = millis();
  if (v &gt; threshold &amp;&amp; now - lastBeat &gt; <span style="color:#79b8ff">300span>) {
    bpm = <span style="color:#79b8ff">60000span> / (now - lastBeat);
    lastBeat = now;
  }
  oled.clearDisplay();
  oled.setTextSize(<span style="color:#79b8ff">2span>); oled.setTextColor(SSD1306_WHITE);
  oled.setCursor(<span style="color:#79b8ff">0span>, <span style="color:#79b8ff">0span>); oled.println(<span style="color:<span style="color:#f97583">#9ecbffspan>">&quot;BPM&quot;span>);
  oled.setTextSize(<span style="color:#79b8ff">3span>);
  oled.setCursor(<span style="color:#79b8ff">0span>, <span style="color:#79b8ff">24span>); oled.println(bpm);
  oled.display();
  delay(<span style="color:#79b8ff">20span>);
}