Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino UNO Based Heart Rate Monitor with I2C LCD Display

View and Edit Project In Cirkit DesignerImage of Arduino UNO Based Heart Rate Monitor with I2C LCD Display

Circuit Documentation

Summary of the Circuit

The circuit in question is designed to monitor the heart pulse rate and display the beats per minute (BPM) on an I2C LCD 16x2 screen. It consists of an Arduino UNO microcontroller, a heart pulse sensor, an I2C LCD 16x2 screen, and a 9V battery to power the system. The Arduino UNO reads the pulse signal from the heart pulse sensor, processes the signal, and then displays the calculated BPM on the LCD screen. The communication between the Arduino and the LCD screen is facilitated through the I2C protocol.

Component List

Arduino UNO

Heart Pulse Sensor

I2C LCD 16x2 Screen

Battery 9V

Wiring Details

Arduino UNO

Heart Pulse Sensor

I2C LCD 16x2 Screen

Battery 9V

Documented Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Initialize the LCD (address 0x27, 16 columns and 2 rows)
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Pulse sensor pin
const int pulsePin = A0;
int pulseValue;
int bpm; // Beats per minute

void setup() {
  Serial.begin(9600);
  lcd.begin();
  lcd.backlight();
  lcd.print("Pulse Rate Monitor");
  delay(2000); // Display title for 2 seconds
  lcd.clear();
}

void loop() {
  pulseValue = analogRead(pulsePin);
  
  // Simple processing to convert pulseValue to BPM
  bpm = map(pulseValue, 0, 1023, 0, 200); // Adjust mapping as needed
  
  // Display on LCD
  lcd.setCursor(0, 0);
  lcd.print("Pulse Rate: ");
  lcd.print(bpm);
  lcd.print(" bpm");
  
  // Debugging output to Serial Monitor
  Serial.print("Pulse Value: ");
  Serial.print(pulseValue);
  Serial.print(" | BPM: ");
  Serial.println(bpm);
  
  delay(1000); // Update every second
}

Filename: sketch.ino

Description: This code initializes the I2C LCD screen and reads the analog pulse signal from the heart pulse sensor connected to pin A0. It maps the analog value to a BPM value and displays it on the LCD. Additionally, it outputs the raw pulse value and calculated BPM to the Serial Monitor for debugging purposes. The display is updated every second.