#include "I2Cdev.h" #include MPU6050 mpu; const int heartRatePin = A0; const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; volatile int heartRate = 0; int intensity = 0; unsigned long previousMillis = 0; const long interval = 500; // Interval for updating the LED display void setup() { Serial.begin(9600); for (int i = 0; i < 8; i++) { pinMode(ledPins[i], OUTPUT); } // Configure timer interrupt Timer1.initialize(1000000); // Set timer to 1 second Timer1.attachInterrupt(timerISR); // Attach timer interrupt service routine // Enable ADC interrupt ADCSRA |= (1 << ADIE); sei(); // Enable global interrupts } ISR(ADC_vect) { heartRate = ADC; // Read the ADC value intensity = map(heartRate, 0, 1023, 0, 255); // Map heart rate to LED intensity } void timerISR() { // Trigger ADC conversion ADCSRA |= (1 << ADSC); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; // Update LED display int numLeds = map(heartRate, 0, 1023, 0, 8); for (int i = 0; i < 8; i++) { if (i < numLeds) { analogWrite(ledPins[i], intensity); } else { digitalWrite(ledPins[i], LOW); } } } }