#include <avr/io.h>
const int dataSamp = 200;
void setup() {
// setup for leads off detection LO +, LO -
PORTB = (0<<PB3)|(0<<PB2);
DDRB = (0<<PB3)|(0<<PB2);
// setup ADC
ADMUX = (0<<REFS1)|(0<<REFS0)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0);
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(0<<ADPS1)|(0<<ADPS0);
DIDR0 = (1<<ADC0D);
// initialize the serial communication
UBRR0L = 103;
UBRR0H = 0;
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
UCSR0C = (0<<UMSEL01)|(0<<UMSEL00)|(0<<UPM01)|(0<<UPM00)|(0<<USBS0)|(3<<UCSZ00);
}
void loop() {
int analogBuffer[dataSamp];
unsigned long timeBuffer[dataSamp];
// sampling the ECG signal and saving it in buffer
for (int i = 0; i < dataSamp; i++)
{
if ((PINB & (1<<PINB2)) || (PINB & (1<<PINB3)))
analogBuffer[i] = '!';
else
analogBuffer[i] = analogRead(A0);
timeBuffer[i] = micros(); // timestamp
}
// then sending saved data for processing in csv format
for (int i = 0; i < dataSamp; i++)
{
Serial.print(timeBuffer[i]);
Serial.print(",");
Serial.println(analogBuffer[i]);
}
}