· 4 years ago · Jun 13, 2021, 01:52 PM
1clc;
2clear all;
3close all;
4
5%arduino set and variables
6a=arduino();
7ecg=0;
8
9for k=1:500
10 b=readVoltage(a,'A0');
11 ecg=[ecg,b];
12 plot(ecg);
13 grid on;
14 drawnow;
15end
16% ecg7500=load('BEAT_12-2-2016 17.53.13.txt');
17% for k=1:500
18% ecg(k)=ecg7500(k);
19% plot(ecg);
20% drawnow;
21% end
22
23%R wave calculation
24wt = modwt(ecg,5);
25wtrec = zeros(size(wt));
26wtrec(4:5,:) = wt(4:5,:);
27y = imodwt(wtrec,'sym4');
28tm = 0:1:499;
29y = abs(y).^2;
30[qrspeaks,locs] = findpeaks(y,tm,'MinPeakHeight',0.35,'MinPeakDistance',0.150);
31figure,
32plot(tm,y);
33hold on
34plot(locs,qrspeaks,'ro')
35xlabel('Seconds')
36title('R Peaks Localized by Wavelet Transform with Automatic Annotations')
37grid on
38
39distanceBetweenFirstAndLastPeaks = locs(length(locs))-locs(1);
40averageDistanceBetweenPeaks = distanceBetweenFirstAndLastPeaks/length(locs);
41averageHeartRate = averageDistanceBetweenPeaks*10/3;
42disp('Average Heart Rate = ');
43disp(averageHeartRate);
44
45%THINGSPEAK SETUP------------------------------
46channelID = ; %%add your channel ID here
47writeKey = ' '; %%add your write API key here
48UserApikey = ' '; %%add youe User API key here
49url = sprintf('https://api.thingspeak.com/channels/%s/feeds.json?api_key=%s',num2str(channelID),UserApikey);
50response = webwrite(url, weboptions('RequestMethod','delete'));
51
52%Creating timestamp----------------------------
53tStamps = [datetime('now')-seconds(499):seconds(1):datetime('now')]';
54dataTable = timetable(tStamps, ecg',y');
55thingSpeakWrite(channelID,dataTable,'WriteKey',writeKey);