Components and supplies
Arduino Due
Project description
Code
Complete Program
c_cpp
This is the program for heart rate estimation.
1#include <SPI.h> 2#include <SD.h> 3const int chipSelect = 4; 4int 5 N=3000; 6int n=0; 7int muestra; 8int x[3000]={0}; 9int x1[3000]={0}; 10int 11 h[1100]={0}; 12int d[1100]={0}; 13int xr[10]; 14int M0; 15int M1; 16int i; 17int 18 c; 19int L; 20int a=0; 21int u=0; 22int s=0; 23int ini=0; 24int m=0; 25int 26 temp; 27int z=0; 28int r=0; 29int p=0; 30 31 32void setup() 33 { 34 L=32; 35 36 Serial.begin(9600); 37 analogReadResolution(12); 38 Serial.print("Initializing 39 SD card..."); 40 // see if the card is present and can be initialized: 41 42 if (!SD.begin(chipSelect)) 43 { 44 Serial.println("Card 45 failed, or not present"); 46 return; 47 } 48 Serial.println("card 49 initialized."); 50 51////////////////// 52/// Filtrado 53 54 for(n=0;n<N;n++) 55 56 { 57 x[n] = analogRead(0); 58 delay(1); 59 } 60 61 62for (n=L;n<N;n++) 63{ 64c=0; 65 66 for (i=0;i<L;i++) 67 { 68 c=c+x[n-i]; 69 } 70 x1[n]=c >> 4; 71} 72 73 74x[0]=0; 75 76for 77 (n=1;n<N;n++) 78{ 79c=x1[n]-x1[n-1]; 80if (c < 0) c=0; 81if (c > 1024) c=0; 82x[n]=c; 83} 84 85 86 87 88///////////// 89 90for(n=0;n<N;n++) 91{ 92 93 File dataFile = SD.open("ELECTRO.txt", FILE_WRITE); 94 String dataString 95 = ""; 96 muestra = x[n]; 97 h[muestra]=h[muestra]+1; 98 dataString += 99 String(muestra); 100 dataFile.println(dataString); 101 dataFile.close(); 102} 103 104Serial.println("ECG 105 Guardado"); 106 107for(n=0;n<1100;n++) 108{ 109 File dataFile = SD.open("HISTO.txt", 110 FILE_WRITE); 111 String dataString = ""; 112 muestra = h[n]; 113 dataString 114 += String(muestra); 115 dataFile.println(dataString); 116 dataFile.close(); 117} 118 119 120Serial.println("Histograma 121 Guardado"); 122 123 124 125d[0]=0; 126for (n=1;n<1100;n++) 127 128{ 129 File dataFile 130 = SD.open("DERIV.txt", FILE_WRITE); 131 String dataString = ""; 132 d[n]=h[n]-h[n-1]; 133 134 dataString = String(d[n]); 135 dataFile.println(dataString); 136 dataFile.close(); 137} 138 139 140 c=0; 141 p=0; 142 for (n=1;n<1100;n++) 143 { 144 if (h[n]>c) 145 { 146 147 c= h[n]; 148 p=n; 149 } 150 } 151 152 153for (n=p;n<1100;n++) 154 155 { 156 if (h[n]==0) 157 { 158 c= n; 159 break; 160 } 161 162 } 163 164 165 166 167Serial.println("Valor Umbral"); 168Serial.println(c); 169 170 171 for (n=0;n<N;n++) 172 { 173 File dataFile = SD.open("UMBRAL.txt", FILE_WRITE); 174 175 String dataString = ""; 176 if (x[n]>c) 177 { 178 x[n]=1; 179 180 } 181 else 182 { 183 x[n]=0; 184 } 185 186 dataString = String(x[n]); 187 dataFile.println(dataString); 188 189 dataFile.close(); 190 } 191 192 193 194 195for (n=0;n<N;n++) 196 197 { 198 199 200 if (x[n]==1) 201 { 202 ini=n; 203 break; 204 205 } 206 207 } 208 209Serial.println(ini); 210 211 for (m=ini;m<N;m++) 212 213 { 214 if (x[m]==0) 215 { 216 temp=temp+1; 217 218 z=0; 219 } 220 else 221 { 222 z=z+1; 223 224 if (z<=1) 225 { 226 r=r+1; 227 xr[r]=temp; 228 229 temp=0; 230 z=z+1; 231 } 232 else 233 234 { 235 z=z+1; 236 temp=temp+1; 237 238 } 239 } 240 } 241 242 243 244 245Serial.println(r); 246 247 248 249for 250 (n=0;n<10;n++) 251 { 252 253 File dataFile = SD.open("FREC.txt", FILE_WRITE); 254 255 String dataString = ""; 256 dataString = String(xr[n]); 257 dataFile.println(dataString); 258 259 dataFile.close(); 260 } 261 262 263Serial.println("Archivo cerrado"); 264 265 266 267 268 269 270 271 272} 273 274 275 276 277 278 279 280 281 282 283void loop() { 284 285 286 287} 288
Complete Program
c_cpp
This is the program for heart rate estimation.
1#include <SPI.h> 2#include <SD.h> 3const int chipSelect = 4; 4int N=3000; 5int n=0; 6int muestra; 7int x[3000]={0}; 8int x1[3000]={0}; 9int h[1100]={0}; 10int d[1100]={0}; 11int xr[10]; 12int M0; 13int M1; 14int i; 15int c; 16int L; 17int a=0; 18int u=0; 19int s=0; 20int ini=0; 21int m=0; 22int temp; 23int z=0; 24int r=0; 25int p=0; 26 27 28void setup() 29 { 30 L=32; 31 Serial.begin(9600); 32 analogReadResolution(12); 33 Serial.print("Initializing SD card..."); 34 // see if the card is present and can be initialized: 35 if (!SD.begin(chipSelect)) 36 { 37 Serial.println("Card failed, or not present"); 38 return; 39 } 40 Serial.println("card initialized."); 41 42////////////////// 43/// Filtrado 44 45 for(n=0;n<N;n++) 46 { 47 x[n] = analogRead(0); 48 delay(1); 49 } 50 51 52for (n=L;n<N;n++) 53{ 54c=0; 55 for (i=0;i<L;i++) 56 { 57 c=c+x[n-i]; 58 } 59 x1[n]=c >> 4; 60} 61 62 63x[0]=0; 64 65for (n=1;n<N;n++) 66{ 67c=x1[n]-x1[n-1]; 68if (c < 0) c=0; 69if (c > 1024) c=0; 70x[n]=c; 71} 72 73 74 75 76///////////// 77 78for(n=0;n<N;n++) 79{ 80 File dataFile = SD.open("ELECTRO.txt", FILE_WRITE); 81 String dataString = ""; 82 muestra = x[n]; 83 h[muestra]=h[muestra]+1; 84 dataString += String(muestra); 85 dataFile.println(dataString); 86 dataFile.close(); 87} 88 89Serial.println("ECG Guardado"); 90 91for(n=0;n<1100;n++) 92{ 93 File dataFile = SD.open("HISTO.txt", FILE_WRITE); 94 String dataString = ""; 95 muestra = h[n]; 96 dataString += String(muestra); 97 dataFile.println(dataString); 98 dataFile.close(); 99} 100 101 102Serial.println("Histograma Guardado"); 103 104 105 106d[0]=0; 107for (n=1;n<1100;n++) 108 109{ 110 File dataFile = SD.open("DERIV.txt", FILE_WRITE); 111 String dataString = ""; 112 d[n]=h[n]-h[n-1]; 113 dataString = String(d[n]); 114 dataFile.println(dataString); 115 dataFile.close(); 116} 117 118 c=0; 119 p=0; 120 for (n=1;n<1100;n++) 121 { 122 if (h[n]>c) 123 { 124 c= h[n]; 125 p=n; 126 } 127 } 128 129 130for (n=p;n<1100;n++) 131 { 132 if (h[n]==0) 133 { 134 c= n; 135 break; 136 } 137 } 138 139 140 141 142Serial.println("Valor Umbral"); 143Serial.println(c); 144 145 for (n=0;n<N;n++) 146 { 147 File dataFile = SD.open("UMBRAL.txt", FILE_WRITE); 148 String dataString = ""; 149 if (x[n]>c) 150 { 151 x[n]=1; 152 } 153 else 154 { 155 x[n]=0; 156 } 157 dataString = String(x[n]); 158 dataFile.println(dataString); 159 dataFile.close(); 160 } 161 162 163 164 165for (n=0;n<N;n++) 166 { 167 168 169 if (x[n]==1) 170 { 171 ini=n; 172 break; 173 } 174 175 } 176 177Serial.println(ini); 178 179 for (m=ini;m<N;m++) 180 { 181 if (x[m]==0) 182 { 183 temp=temp+1; 184 z=0; 185 } 186 else 187 { 188 z=z+1; 189 if (z<=1) 190 { 191 r=r+1; 192 xr[r]=temp; 193 temp=0; 194 z=z+1; 195 } 196 else 197 { 198 z=z+1; 199 temp=temp+1; 200 } 201 } 202 } 203 204 205 206 207Serial.println(r); 208 209 210 211for (n=0;n<10;n++) 212 { 213 214 File dataFile = SD.open("FREC.txt", FILE_WRITE); 215 String dataString = ""; 216 dataString = String(xr[n]); 217 dataFile.println(dataString); 218 dataFile.close(); 219 } 220 221 222Serial.println("Archivo cerrado"); 223 224 225 226 227 228 229 230} 231 232 233 234 235 236 237 238 239 240 241void loop() { 242 243 244 245} 246
Downloadable files
Complete filte
Complete filte
Documentation
Patien Simulator
This was used as ECG signal generator. This is profesional tool for testing hear estimation systems
Patien Simulator
ECG SHIEDL olimex
This is the ECG shield from OLIMEX used as analog amplifier
ECG SHIEDL olimex
ECG SHIEDL olimex
This is the ECG shield from OLIMEX used as analog amplifier
ECG SHIEDL olimex
Patien Simulator
This was used as ECG signal generator. This is profesional tool for testing hear estimation systems
Patien Simulator
Comments
Only logged in users can leave comments