the complete model of the heart model

Dependencies:   TextLCD mbed-rtos mbed

Fork of heart by William Archer

Committer:
williamrchr
Date:
Mon Nov 28 20:40:31 2016 +0000
Revision:
0:08412491e70f
Child:
1:6ad7b5bf9c27
first push;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
williamrchr 0:08412491e70f 1 #include "mbed.h"
williamrchr 0:08412491e70f 2 #include "rtos.h"
williamrchr 0:08412491e70f 3 #include "TextLCD.h"
williamrchr 0:08412491e70f 4
williamrchr 0:08412491e70f 5 TextLCD lcd(p15,p16,p17,p18,p19,p20,TextLCD::LCD16x2);
williamrchr 0:08412491e70f 6 Serial pc(USBTX, USBRX); //set up serial
williamrchr 0:08412491e70f 7 DigitalOut natAPace(LED1); //leds for pacing
williamrchr 0:08412491e70f 8 DigitalOut natVPace(LED2);
williamrchr 0:08412491e70f 9 DigitalOut aPace(LED3);
williamrchr 0:08412491e70f 10 DigitalOut vPace(LED4);
williamrchr 0:08412491e70f 11 DigitalOut alarm(p5); //pin for alarm
williamrchr 0:08412491e70f 12
williamrchr 0:08412491e70f 13 DigitalOut a_signal(p6); //connected to pm
williamrchr 0:08412491e70f 14 DigitalOut v_signal(p7); //connected to pm
williamrchr 0:08412491e70f 15
williamrchr 0:08412491e70f 16 unsigned int a_time = 0;
williamrchr 0:08412491e70f 17 unsigned int v_time = 0;
williamrchr 0:08412491e70f 18
williamrchr 0:08412491e70f 19 int mode = 0; //0 = random, 1 = manual, 2 = test
williamrchr 0:08412491e70f 20
williamrchr 0:08412491e70f 21 //constants
williamrchr 0:08412491e70f 22
williamrchr 0:08412491e70f 23 const int minwait_A = 10;
williamrchr 0:08412491e70f 24 const int minwait_V = 20;
williamrchr 0:08412491e70f 25 const int LRI = 1000;
williamrchr 0:08412491e70f 26 const int VRP = 400;
williamrchr 0:08412491e70f 27 const int PVARP = 500;
williamrchr 0:08412491e70f 28 const int URI = 1000;
williamrchr 0:08412491e70f 29 const int AVI = 100;
williamrchr 0:08412491e70f 30
williamrchr 0:08412491e70f 31 void switch_modes() {
williamrchr 0:08412491e70f 32 switch(mode) {
williamrchr 0:08412491e70f 33 case 0:
williamrchr 0:08412491e70f 34 break;
williamrchr 0:08412491e70f 35 case 1:
williamrchr 0:08412491e70f 36 break;
williamrchr 0:08412491e70f 37 case 2:
williamrchr 0:08412491e70f 38 break;
williamrchr 0:08412491e70f 39
williamrchr 0:08412491e70f 40 }
williamrchr 0:08412491e70f 41
williamrchr 0:08412491e70f 42 }
williamrchr 0:08412491e70f 43
williamrchr 0:08412491e70f 44
williamrchr 0:08412491e70f 45 void received_apace() {
williamrchr 0:08412491e70f 46 //TODO: DO
williamrchr 0:08412491e70f 47 aPace = 1;
williamrchr 0:08412491e70f 48
williamrchr 0:08412491e70f 49 }
williamrchr 0:08412491e70f 50
williamrchr 0:08412491e70f 51 void received_vpace() {
williamrchr 0:08412491e70f 52 //TODO: DO
williamrchr 0:08412491e70f 53 vPace = 1;
williamrchr 0:08412491e70f 54
williamrchr 0:08412491e70f 55 }
williamrchr 0:08412491e70f 56
williamrchr 0:08412491e70f 57 void send_signal(int type) { //type=0 a_signal, type=1 v_signal
williamrchr 0:08412491e70f 58
williamrchr 0:08412491e70f 59 switch(type) {
williamrchr 0:08412491e70f 60 case 0:
williamrchr 0:08412491e70f 61 a_signal = 1;
williamrchr 0:08412491e70f 62 case 1:
williamrchr 0:08412491e70f 63 v_signal = 1;
williamrchr 0:08412491e70f 64 }
williamrchr 0:08412491e70f 65 //TODO: Determine if time is right (is this supposed to be minWait?)
williamrchr 0:08412491e70f 66 wait(1);
williamrchr 0:08412491e70f 67 a_sense = 0;
williamrchr 0:08412491e70f 68 v_sense = 0;
williamrchr 0:08412491e70f 69 }
williamrchr 0:08412491e70f 70
williamrchr 0:08412491e70f 71 void heart_keyboard() {
williamrchr 0:08412491e70f 72 while(true) { //thread is continuously running
williamrchr 0:08412491e70f 73 if(pc.readable()) {
williamrchr 0:08412491e70f 74 char c = pc.getc();
williamrchr 0:08412491e70f 75
williamrchr 0:08412491e70f 76 switch(c) {
williamrchr 0:08412491e70f 77 case 'r': //set to random mode
williamrchr 0:08412491e70f 78 mode = 0;
williamrchr 0:08412491e70f 79 break;
williamrchr 0:08412491e70f 80 case 'm': //set to manual mode
williamrchr 0:08412491e70f 81 mode = 1;
williamrchr 0:08412491e70f 82 break;
williamrchr 0:08412491e70f 83 case 't': //set to test mode
williamrchr 0:08412491e70f 84 mode = 2;
williamrchr 0:08412491e70f 85 break;
williamrchr 0:08412491e70f 86 case 'a': //asignal
williamrchr 0:08412491e70f 87 if(mode) { //only if in manual (heart_mode == 1)
williamrchr 0:08412491e70f 88 send_signal(0);
williamrchr 0:08412491e70f 89 }
williamrchr 0:08412491e70f 90 break;
williamrchr 0:08412491e70f 91 case 'v': //vsignal
williamrchr 0:08412491e70f 92 if(mode) { //only if in manual (heart_mode == 1)
williamrchr 0:08412491e70f 93 send_signal(1);
williamrchr 0:08412491e70f 94 }
williamrchr 0:08412491e70f 95 break;
williamrchr 0:08412491e70f 96 default: //erroneous key get rid of it
williamrchr 0:08412491e70f 97 break;
williamrchr 0:08412491e70f 98 }
williamrchr 0:08412491e70f 99 }
williamrchr 0:08412491e70f 100 }
williamrchr 0:08412491e70f 101 }
williamrchr 0:08412491e70f 102
williamrchr 0:08412491e70f 103 void tick() {
williamrchr 0:08412491e70f 104 a_time++;
williamrchr 0:08412491e70f 105 v_time++;
williamrchr 0:08412491e70f 106 }
williamrchr 0:08412491e70f 107
williamrchr 0:08412491e70f 108 int main() {
williamrchr 0:08412491e70f 109 //TODO: Set up threads
williamrchr 0:08412491e70f 110
williamrchr 0:08412491e70f 111 }