
heart for pacemaker
Dependencies: TextLCD mbed-rtos mbed
main.cpp@1:82631d83e51e, 2016-11-30 (annotated)
- Committer:
- williamrchr
- Date:
- Wed Nov 30 20:52:41 2016 +0000
- Revision:
- 1:82631d83e51e
- Parent:
- 0:08412491e70f
- Child:
- 2:2bae2020ac36
commit;
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:82631d83e51e | 23 | const int minwait_A = 10; //all in msec |
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 | 1:82631d83e51e | 31 | void random_mode() { |
williamrchr | 1:82631d83e51e | 32 | if(a_time >= min_waitA) { |
williamrchr | 1:82631d83e51e | 33 | send_signal(0); |
williamrchr | 1:82631d83e51e | 34 | a_time = 0; |
williamrchr | 1:82631d83e51e | 35 | } |
williamrchr | 1:82631d83e51e | 36 | if(v_time >= min_waitV) { |
williamrchr | 1:82631d83e51e | 37 | send_signal(1); |
williamrchr | 1:82631d83e51e | 38 | v_time = 0; |
williamrchr | 1:82631d83e51e | 39 | } |
williamrchr | 1:82631d83e51e | 40 | } |
williamrchr | 1:82631d83e51e | 41 | |
williamrchr | 0:08412491e70f | 42 | void switch_modes() { |
williamrchr | 0:08412491e70f | 43 | switch(mode) { |
williamrchr | 1:82631d83e51e | 44 | case 0: //becomes random |
williamrchr | 0:08412491e70f | 45 | break; |
williamrchr | 1:82631d83e51e | 46 | case 1: //becomes manual |
williamrchr | 0:08412491e70f | 47 | break; |
williamrchr | 1:82631d83e51e | 48 | case 2: //becomes test |
williamrchr | 0:08412491e70f | 49 | break; |
williamrchr | 0:08412491e70f | 50 | |
williamrchr | 0:08412491e70f | 51 | } |
williamrchr | 0:08412491e70f | 52 | |
williamrchr | 0:08412491e70f | 53 | } |
williamrchr | 0:08412491e70f | 54 | |
williamrchr | 0:08412491e70f | 55 | |
williamrchr | 0:08412491e70f | 56 | void received_apace() { |
williamrchr | 0:08412491e70f | 57 | //TODO: DO |
williamrchr | 0:08412491e70f | 58 | aPace = 1; |
williamrchr | 0:08412491e70f | 59 | |
williamrchr | 0:08412491e70f | 60 | } |
williamrchr | 0:08412491e70f | 61 | |
williamrchr | 0:08412491e70f | 62 | void received_vpace() { |
williamrchr | 0:08412491e70f | 63 | //TODO: DO |
williamrchr | 0:08412491e70f | 64 | vPace = 1; |
williamrchr | 0:08412491e70f | 65 | |
williamrchr | 0:08412491e70f | 66 | } |
williamrchr | 0:08412491e70f | 67 | |
williamrchr | 0:08412491e70f | 68 | void send_signal(int type) { //type=0 a_signal, type=1 v_signal |
williamrchr | 0:08412491e70f | 69 | |
williamrchr | 0:08412491e70f | 70 | switch(type) { |
williamrchr | 0:08412491e70f | 71 | case 0: |
williamrchr | 0:08412491e70f | 72 | a_signal = 1; |
williamrchr | 1:82631d83e51e | 73 | natAPace = 1; |
williamrchr | 0:08412491e70f | 74 | case 1: |
williamrchr | 0:08412491e70f | 75 | v_signal = 1; |
williamrchr | 1:82631d83e51e | 76 | natVPace = 1; |
williamrchr | 0:08412491e70f | 77 | } |
williamrchr | 0:08412491e70f | 78 | wait(1); |
williamrchr | 1:82631d83e51e | 79 | a_signal = 0; |
williamrchr | 1:82631d83e51e | 80 | v_signal = 0; |
williamrchr | 1:82631d83e51e | 81 | natAPace = 0; |
williamrchr | 1:82631d83e51e | 82 | natVPace = 0 |
williamrchr | 0:08412491e70f | 83 | } |
williamrchr | 0:08412491e70f | 84 | |
williamrchr | 0:08412491e70f | 85 | void heart_keyboard() { |
williamrchr | 0:08412491e70f | 86 | while(true) { //thread is continuously running |
williamrchr | 0:08412491e70f | 87 | if(pc.readable()) { |
williamrchr | 0:08412491e70f | 88 | char c = pc.getc(); |
williamrchr | 0:08412491e70f | 89 | |
williamrchr | 0:08412491e70f | 90 | switch(c) { |
williamrchr | 0:08412491e70f | 91 | case 'r': //set to random mode |
williamrchr | 0:08412491e70f | 92 | mode = 0; |
williamrchr | 0:08412491e70f | 93 | break; |
williamrchr | 0:08412491e70f | 94 | case 'm': //set to manual mode |
williamrchr | 0:08412491e70f | 95 | mode = 1; |
williamrchr | 0:08412491e70f | 96 | break; |
williamrchr | 0:08412491e70f | 97 | case 't': //set to test mode |
williamrchr | 0:08412491e70f | 98 | mode = 2; |
williamrchr | 0:08412491e70f | 99 | break; |
williamrchr | 0:08412491e70f | 100 | case 'a': //asignal |
williamrchr | 0:08412491e70f | 101 | if(mode) { //only if in manual (heart_mode == 1) |
williamrchr | 0:08412491e70f | 102 | send_signal(0); |
williamrchr | 0:08412491e70f | 103 | } |
williamrchr | 0:08412491e70f | 104 | break; |
williamrchr | 0:08412491e70f | 105 | case 'v': //vsignal |
williamrchr | 0:08412491e70f | 106 | if(mode) { //only if in manual (heart_mode == 1) |
williamrchr | 0:08412491e70f | 107 | send_signal(1); |
williamrchr | 0:08412491e70f | 108 | } |
williamrchr | 0:08412491e70f | 109 | break; |
williamrchr | 0:08412491e70f | 110 | default: //erroneous key get rid of it |
williamrchr | 0:08412491e70f | 111 | break; |
williamrchr | 0:08412491e70f | 112 | } |
williamrchr | 0:08412491e70f | 113 | } |
williamrchr | 0:08412491e70f | 114 | } |
williamrchr | 0:08412491e70f | 115 | } |
williamrchr | 0:08412491e70f | 116 | |
williamrchr | 0:08412491e70f | 117 | void tick() { |
williamrchr | 0:08412491e70f | 118 | a_time++; |
williamrchr | 0:08412491e70f | 119 | v_time++; |
williamrchr | 0:08412491e70f | 120 | } |
williamrchr | 0:08412491e70f | 121 | |
williamrchr | 0:08412491e70f | 122 | int main() { |
williamrchr | 0:08412491e70f | 123 | //TODO: Set up threads |
williamrchr | 0:08412491e70f | 124 | |
williamrchr | 0:08412491e70f | 125 | } |