Oscar de Jesus Vasquez
/
Ksen
Plataforma de sensores biométricos
main.cpp@0:3325cdd7ccda, 2016-04-16 (annotated)
- Committer:
- oscarvzfz
- Date:
- Sat Apr 16 20:25:08 2016 +0000
- Revision:
- 0:3325cdd7ccda
Hackaton Kplat : Plataforma de sensores
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
oscarvzfz | 0:3325cdd7ccda | 1 | #include "mbed.h" |
oscarvzfz | 0:3325cdd7ccda | 2 | #include "HCSR04.h" |
oscarvzfz | 0:3325cdd7ccda | 3 | |
oscarvzfz | 0:3325cdd7ccda | 4 | |
oscarvzfz | 0:3325cdd7ccda | 5 | Serial pc(USBTX,USBRX); |
oscarvzfz | 0:3325cdd7ccda | 6 | Serial blue(p9,p10); // TX = P14 RX = P13 |
oscarvzfz | 0:3325cdd7ccda | 7 | DigitalOut status(LED1); |
oscarvzfz | 0:3325cdd7ccda | 8 | DigitalOut statust(LED4); |
oscarvzfz | 0:3325cdd7ccda | 9 | AnalogIn lm35(p20); |
oscarvzfz | 0:3325cdd7ccda | 10 | HCSR04 rangeFinder(p14,p13); |
oscarvzfz | 0:3325cdd7ccda | 11 | AnalogIn ECG (p19); |
oscarvzfz | 0:3325cdd7ccda | 12 | Timer t; |
oscarvzfz | 0:3325cdd7ccda | 13 | |
oscarvzfz | 0:3325cdd7ccda | 14 | |
oscarvzfz | 0:3325cdd7ccda | 15 | float range; |
oscarvzfz | 0:3325cdd7ccda | 16 | char mander='1'; |
oscarvzfz | 0:3325cdd7ccda | 17 | float temp=0; |
oscarvzfz | 0:3325cdd7ccda | 18 | float signalC=0; |
oscarvzfz | 0:3325cdd7ccda | 19 | float timeC=0; |
oscarvzfz | 0:3325cdd7ccda | 20 | |
oscarvzfz | 0:3325cdd7ccda | 21 | //Variables de HR |
oscarvzfz | 0:3325cdd7ccda | 22 | AnalogIn sens(p15); |
oscarvzfz | 0:3325cdd7ccda | 23 | float sig=0; |
oscarvzfz | 0:3325cdd7ccda | 24 | int flag=0; |
oscarvzfz | 0:3325cdd7ccda | 25 | float t1 = 0; |
oscarvzfz | 0:3325cdd7ccda | 26 | float t2 = 0; |
oscarvzfz | 0:3325cdd7ccda | 27 | int it = 0; |
oscarvzfz | 0:3325cdd7ccda | 28 | float dif; |
oscarvzfz | 0:3325cdd7ccda | 29 | int BPM; |
oscarvzfz | 0:3325cdd7ccda | 30 | float sum = 0; |
oscarvzfz | 0:3325cdd7ccda | 31 | int acum = 0; |
oscarvzfz | 0:3325cdd7ccda | 32 | float lastBPM=0; |
oscarvzfz | 0:3325cdd7ccda | 33 | |
oscarvzfz | 0:3325cdd7ccda | 34 | |
oscarvzfz | 0:3325cdd7ccda | 35 | int main() |
oscarvzfz | 0:3325cdd7ccda | 36 | { |
oscarvzfz | 0:3325cdd7ccda | 37 | pc.baud(115200); |
oscarvzfz | 0:3325cdd7ccda | 38 | blue.baud(115200); |
oscarvzfz | 0:3325cdd7ccda | 39 | pc.printf("Bluetooth iniciado\n\r"); |
oscarvzfz | 0:3325cdd7ccda | 40 | |
oscarvzfz | 0:3325cdd7ccda | 41 | while (1) |
oscarvzfz | 0:3325cdd7ccda | 42 | { |
oscarvzfz | 0:3325cdd7ccda | 43 | if (blue.readable()) |
oscarvzfz | 0:3325cdd7ccda | 44 | {mander= blue.getc();} |
oscarvzfz | 0:3325cdd7ccda | 45 | |
oscarvzfz | 0:3325cdd7ccda | 46 | // if(mander=='a') |
oscarvzfz | 0:3325cdd7ccda | 47 | // {status=1;mander='1';} |
oscarvzfz | 0:3325cdd7ccda | 48 | |
oscarvzfz | 0:3325cdd7ccda | 49 | if (mander=='s') |
oscarvzfz | 0:3325cdd7ccda | 50 | {status=0;mander='1';} |
oscarvzfz | 0:3325cdd7ccda | 51 | |
oscarvzfz | 0:3325cdd7ccda | 52 | if(mander=='d') |
oscarvzfz | 0:3325cdd7ccda | 53 | {blue.printf("El estado del bluetooth es %i |\r",status.read());mander='1';} |
oscarvzfz | 0:3325cdd7ccda | 54 | |
oscarvzfz | 0:3325cdd7ccda | 55 | if(mander=='t') |
oscarvzfz | 0:3325cdd7ccda | 56 | { |
oscarvzfz | 0:3325cdd7ccda | 57 | statust=1; |
oscarvzfz | 0:3325cdd7ccda | 58 | wait(20); |
oscarvzfz | 0:3325cdd7ccda | 59 | temp=(lm35.read()*3.3)/.01; |
oscarvzfz | 0:3325cdd7ccda | 60 | blue.printf("t,%f|\r",temp); |
oscarvzfz | 0:3325cdd7ccda | 61 | pc.printf("t,%f\n\r",temp); |
oscarvzfz | 0:3325cdd7ccda | 62 | mander=1; |
oscarvzfz | 0:3325cdd7ccda | 63 | statust=0; |
oscarvzfz | 0:3325cdd7ccda | 64 | } |
oscarvzfz | 0:3325cdd7ccda | 65 | |
oscarvzfz | 0:3325cdd7ccda | 66 | if(mander=='a') |
oscarvzfz | 0:3325cdd7ccda | 67 | { wait(1); |
oscarvzfz | 0:3325cdd7ccda | 68 | rangeFinder.startMeas(); |
oscarvzfz | 0:3325cdd7ccda | 69 | wait(0.1); |
oscarvzfz | 0:3325cdd7ccda | 70 | rangeFinder.getMeas(range); |
oscarvzfz | 0:3325cdd7ccda | 71 | blue.printf("a,%.0f|\r", 77-range*100); |
oscarvzfz | 0:3325cdd7ccda | 72 | pc.printf("a,%.0f\n\r", 77-range*100); |
oscarvzfz | 0:3325cdd7ccda | 73 | mander=1; |
oscarvzfz | 0:3325cdd7ccda | 74 | } |
oscarvzfz | 0:3325cdd7ccda | 75 | |
oscarvzfz | 0:3325cdd7ccda | 76 | if(mander=='e') |
oscarvzfz | 0:3325cdd7ccda | 77 | { |
oscarvzfz | 0:3325cdd7ccda | 78 | t.reset(); |
oscarvzfz | 0:3325cdd7ccda | 79 | t.start(); |
oscarvzfz | 0:3325cdd7ccda | 80 | while (mander=='e') |
oscarvzfz | 0:3325cdd7ccda | 81 | { |
oscarvzfz | 0:3325cdd7ccda | 82 | signalC=ECG.read()*3.3; |
oscarvzfz | 0:3325cdd7ccda | 83 | timeC=t.read(); |
oscarvzfz | 0:3325cdd7ccda | 84 | blue.printf("e,%f,%f|\r",signalC,timeC); |
oscarvzfz | 0:3325cdd7ccda | 85 | pc.printf("e,%f,%f\n\r",signalC,timeC); |
oscarvzfz | 0:3325cdd7ccda | 86 | wait(.02); |
oscarvzfz | 0:3325cdd7ccda | 87 | if(timeC >=8) |
oscarvzfz | 0:3325cdd7ccda | 88 | {mander=1;} |
oscarvzfz | 0:3325cdd7ccda | 89 | } |
oscarvzfz | 0:3325cdd7ccda | 90 | } |
oscarvzfz | 0:3325cdd7ccda | 91 | |
oscarvzfz | 0:3325cdd7ccda | 92 | if(mander=='p') |
oscarvzfz | 0:3325cdd7ccda | 93 | { |
oscarvzfz | 0:3325cdd7ccda | 94 | t.start(); |
oscarvzfz | 0:3325cdd7ccda | 95 | while(mander=='p') |
oscarvzfz | 0:3325cdd7ccda | 96 | { |
oscarvzfz | 0:3325cdd7ccda | 97 | if(acum == 2) |
oscarvzfz | 0:3325cdd7ccda | 98 | { |
oscarvzfz | 0:3325cdd7ccda | 99 | sum = sum / 2; |
oscarvzfz | 0:3325cdd7ccda | 100 | blue.printf("p,%f|\r",sum); |
oscarvzfz | 0:3325cdd7ccda | 101 | pc.printf("p,%f\n\r",sum); |
oscarvzfz | 0:3325cdd7ccda | 102 | sum = 0; |
oscarvzfz | 0:3325cdd7ccda | 103 | acum = 0; |
oscarvzfz | 0:3325cdd7ccda | 104 | mander='1'; |
oscarvzfz | 0:3325cdd7ccda | 105 | } |
oscarvzfz | 0:3325cdd7ccda | 106 | sig=sens.read(); |
oscarvzfz | 0:3325cdd7ccda | 107 | if(sig>=1 && flag==0) |
oscarvzfz | 0:3325cdd7ccda | 108 | { |
oscarvzfz | 0:3325cdd7ccda | 109 | if(it == 1) |
oscarvzfz | 0:3325cdd7ccda | 110 | { |
oscarvzfz | 0:3325cdd7ccda | 111 | t2 = t.read(); |
oscarvzfz | 0:3325cdd7ccda | 112 | it = 0; |
oscarvzfz | 0:3325cdd7ccda | 113 | if(BPM!=0){lastBPM=BPM; |
oscarvzfz | 0:3325cdd7ccda | 114 | } |
oscarvzfz | 0:3325cdd7ccda | 115 | dif = t2 - t1; |
oscarvzfz | 0:3325cdd7ccda | 116 | BPM = 60 / dif; |
oscarvzfz | 0:3325cdd7ccda | 117 | flag = 1; |
oscarvzfz | 0:3325cdd7ccda | 118 | if(BPM < 250 || BPM-lastBPM < (3/5)*lastBPM) |
oscarvzfz | 0:3325cdd7ccda | 119 | { |
oscarvzfz | 0:3325cdd7ccda | 120 | sum = sum + BPM; |
oscarvzfz | 0:3325cdd7ccda | 121 | acum++; |
oscarvzfz | 0:3325cdd7ccda | 122 | } |
oscarvzfz | 0:3325cdd7ccda | 123 | } |
oscarvzfz | 0:3325cdd7ccda | 124 | else |
oscarvzfz | 0:3325cdd7ccda | 125 | { |
oscarvzfz | 0:3325cdd7ccda | 126 | t1 = t.read(); |
oscarvzfz | 0:3325cdd7ccda | 127 | flag = 1; |
oscarvzfz | 0:3325cdd7ccda | 128 | it++; |
oscarvzfz | 0:3325cdd7ccda | 129 | } |
oscarvzfz | 0:3325cdd7ccda | 130 | } |
oscarvzfz | 0:3325cdd7ccda | 131 | |
oscarvzfz | 0:3325cdd7ccda | 132 | if(sig < 0.5 && flag == 1) |
oscarvzfz | 0:3325cdd7ccda | 133 | {flag = 0; } |
oscarvzfz | 0:3325cdd7ccda | 134 | |
oscarvzfz | 0:3325cdd7ccda | 135 | } |
oscarvzfz | 0:3325cdd7ccda | 136 | |
oscarvzfz | 0:3325cdd7ccda | 137 | } |
oscarvzfz | 0:3325cdd7ccda | 138 | } |
oscarvzfz | 0:3325cdd7ccda | 139 | } |