fork the master

Dependencies:   TextLCD mbed-rtos mbed

Fork of Pacemaker by pacemaker team

Revision:
5:376358077dc8
Parent:
4:cce9946d9dcd
Child:
8:ce2565cfe709
--- a/main.cpp	Sat Nov 29 20:52:33 2014 +0000
+++ b/main.cpp	Sat Nov 29 21:21:59 2014 +0000
@@ -22,8 +22,10 @@
 #define PULSE_WIDTH_V 200
 #define PULSE_WIDTH_A 100
 
+
 int LRI_h = 1666;
 int LRI_l = 666;
+int observation_interval=10000;   //ms
 
 Serial pc(USBTX, USBRX);
 TextLCD myPanel(p15,p16,p17,p18,p19,p20,TextLCD::LCD16x2);
@@ -32,6 +34,8 @@
 int a_clock;
 int v_clock;
 
+int beat;
+
 InterruptIn atrial_int(p17);
 InterruptIn vent_int(p18);
 
@@ -39,8 +43,10 @@
 const int v_pace = 3; //pin 23  v pace output
 
 bool aSensed = 0; // 0 means that we are expecting Apace or Asense next
-DigitalOut myled(LED1);
-//DigitalOut testpin(p6);
+DigitalOut led1(LED1);   //apace
+DigitalOut led2(LED2);   //vpace
+DigitalOut led3(LED3);   //asense
+DigitalOut led4(LED4);   //vsense
 
 void initTimer();
 void startTimer();
@@ -57,16 +63,21 @@
 
 void apace()
 {
+    led1 = 1;
     setGPIO(a_pace);
     wait_us(PULSE_WIDTH_A);
-    clearGPIO(a_pace);    
+    clearGPIO(a_pace); 
+    led = 0;   
+    
 }
 
 void vpace()
 {
+    led2= 1;
     setGPIO(v_pace);
     wait_us(PULSE_WIDTH_V);
     clearGPIO(v_pace);  
+    led2 = 0;
 }
 
 void initGPIO_outputs()
@@ -118,7 +129,9 @@
 {    
     while(1)
     {
-
+        wait_ms(observation_interval);
+        myPanel.printf("BPM: %d\r\n", beat/observation_interval * 60);
+        beat=0;
     }
 }
 
@@ -128,13 +141,17 @@
         v_clock = 0;
         aSensed = 0;
      }
+     led3 = 1;
+     
 }
 
 void vsense() {
         if ((v_clock >= PVARP_l) && aSensed == 0){ 
         a_clock = 0;
         aSensed = 1;
+        beat++;
     }
+    led4 = 1;
 }
 
 void button_handler(void const *args)
@@ -195,6 +212,7 @@
        if (v_clock >= (LRI_h-AVI_l) && aSensed == 0) {
             a_clock = 0;
             aSensed = 1;  
+            beat++;
             //printf("Apace %d\r\n",v_clk);
             apace();
             /*
@@ -206,6 +224,7 @@
         if ((a_clock >= AVI_h) && aSensed == 1) {
             v_clock = 0;
             aSensed = 0;
+            //led3 = 0;
             //printf("Vpace %d\r\n",a_clk);
             /*
             setGPIO(v_pace);
@@ -216,13 +235,16 @@
         }
         v_clock++;
         a_clock++;
+        
+        if(v_clock>500) led3 = 0;
+        if(a_clock>500) led4 = 0;
     } 
 }
 
 
 int main (void) {
     //TODO set parameters
-    myled = 0;
+    
 
     Thread display(display_thread_handler);
     Thread keyboard(button_handler);