Hopkins (Henry) / Mbed 2 deprecated CPR_Vest

Dependencies:   mbed

Committer:
hassan_elahi
Date:
Tue Jun 30 16:02:40 2020 +0000
Revision:
0:4cb10c0a8d0c
CPR

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hassan_elahi 0:4cb10c0a8d0c 1 #include "mbed.h"
hassan_elahi 0:4cb10c0a8d0c 2
hassan_elahi 0:4cb10c0a8d0c 3 //Interface with the LCD with UART
hassan_elahi 0:4cb10c0a8d0c 4 Serial LCD(p9, p10); // tx, rx
hassan_elahi 0:4cb10c0a8d0c 5 //Interface with the PC with UART
hassan_elahi 0:4cb10c0a8d0c 6 Serial pc(USBTX, USBRX); // tx, rx
hassan_elahi 0:4cb10c0a8d0c 7
hassan_elahi 0:4cb10c0a8d0c 8 DigitalOut valve(p21); //Port 6
hassan_elahi 0:4cb10c0a8d0c 9 DigitalOut pump(p22); // Port 8
hassan_elahi 0:4cb10c0a8d0c 10
hassan_elahi 0:4cb10c0a8d0c 11 AnalogOut speed(p18); //Port 7
hassan_elahi 0:4cb10c0a8d0c 12
hassan_elahi 0:4cb10c0a8d0c 13 AnalogIn temperatures(p15);
hassan_elahi 0:4cb10c0a8d0c 14 AnalogIn ECG(p16); //Port 17
hassan_elahi 0:4cb10c0a8d0c 15
hassan_elahi 0:4cb10c0a8d0c 16 // PFC, Port11, Port12, Port3
hassan_elahi 0:4cb10c0a8d0c 17 //Select between temp sensors
hassan_elahi 0:4cb10c0a8d0c 18 BusOut tempSel(p12, p11);
hassan_elahi 0:4cb10c0a8d0c 19 BusOut templeds(LED3, LED4);
hassan_elahi 0:4cb10c0a8d0c 20
hassan_elahi 0:4cb10c0a8d0c 21 // read pressure sensor
hassan_elahi 0:4cb10c0a8d0c 22 AnalogIn pressure(p20); //Port 15
hassan_elahi 0:4cb10c0a8d0c 23
hassan_elahi 0:4cb10c0a8d0c 24 //Fan control should be PWM
hassan_elahi 0:4cb10c0a8d0c 25 DigitalOut fan1(p23); // Port 19
hassan_elahi 0:4cb10c0a8d0c 26 DigitalOut fan2(p24); // Port 20
hassan_elahi 0:4cb10c0a8d0c 27 DigitalOut fan3(p25); // Port 21
hassan_elahi 0:4cb10c0a8d0c 28
hassan_elahi 0:4cb10c0a8d0c 29 //valve sync from outside
hassan_elahi 0:4cb10c0a8d0c 30 DigitalIn sync(p29); // Port 9
hassan_elahi 0:4cb10c0a8d0c 31
hassan_elahi 0:4cb10c0a8d0c 32 //Enable the PFC
hassan_elahi 0:4cb10c0a8d0c 33 DigitalOut PFC_ENABLE(p14);
hassan_elahi 0:4cb10c0a8d0c 34 DigitalIn PFW(p13);
hassan_elahi 0:4cb10c0a8d0c 35
hassan_elahi 0:4cb10c0a8d0c 36 //when the PFC module is setteled are something is wrong
hassan_elahi 0:4cb10c0a8d0c 37 InterruptIn LD_ENABLE(p17);
hassan_elahi 0:4cb10c0a8d0c 38
hassan_elahi 0:4cb10c0a8d0c 39 //Control the main Pump
hassan_elahi 0:4cb10c0a8d0c 40 DigitalOut LOAD(p26);
hassan_elahi 0:4cb10c0a8d0c 41
hassan_elahi 0:4cb10c0a8d0c 42
hassan_elahi 0:4cb10c0a8d0c 43 DigitalOut powerLed(LED1);
hassan_elahi 0:4cb10c0a8d0c 44 DigitalOut valveLed(LED2);
hassan_elahi 0:4cb10c0a8d0c 45
hassan_elahi 0:4cb10c0a8d0c 46 void enableFunc(){
hassan_elahi 0:4cb10c0a8d0c 47 if(LD_ENABLE)
hassan_elahi 0:4cb10c0a8d0c 48 powerLed = 1;
hassan_elahi 0:4cb10c0a8d0c 49 else
hassan_elahi 0:4cb10c0a8d0c 50 powerLed = 0;
hassan_elahi 0:4cb10c0a8d0c 51 }
hassan_elahi 0:4cb10c0a8d0c 52
hassan_elahi 0:4cb10c0a8d0c 53 int freq = 60;
hassan_elahi 0:4cb10c0a8d0c 54 int amp = 50;
hassan_elahi 0:4cb10c0a8d0c 55 int dutyCycle = 50;
hassan_elahi 0:4cb10c0a8d0c 56 bool syncState = false;
hassan_elahi 0:4cb10c0a8d0c 57
hassan_elahi 0:4cb10c0a8d0c 58 char temp;
hassan_elahi 0:4cb10c0a8d0c 59 bool start =0;
hassan_elahi 0:4cb10c0a8d0c 60 bool dataReady =0;
hassan_elahi 0:4cb10c0a8d0c 61 int receivedNumber;
hassan_elahi 0:4cb10c0a8d0c 62
hassan_elahi 0:4cb10c0a8d0c 63
hassan_elahi 0:4cb10c0a8d0c 64 int main() {
hassan_elahi 0:4cb10c0a8d0c 65
hassan_elahi 0:4cb10c0a8d0c 66 LD_ENABLE.mode(PullUp);
hassan_elahi 0:4cb10c0a8d0c 67
hassan_elahi 0:4cb10c0a8d0c 68 //set hte baudrate
hassan_elahi 0:4cb10c0a8d0c 69 pc.baud(9600);
hassan_elahi 0:4cb10c0a8d0c 70 LCD.baud(115200);
hassan_elahi 0:4cb10c0a8d0c 71
hassan_elahi 0:4cb10c0a8d0c 72 // initit
hassan_elahi 0:4cb10c0a8d0c 73 pump =0;
hassan_elahi 0:4cb10c0a8d0c 74 powerLed = 0;
hassan_elahi 0:4cb10c0a8d0c 75 valve =0;
hassan_elahi 0:4cb10c0a8d0c 76 valveLed = 0;
hassan_elahi 0:4cb10c0a8d0c 77
hassan_elahi 0:4cb10c0a8d0c 78 wait_ms(10);
hassan_elahi 0:4cb10c0a8d0c 79 //Interupt call back functions
hassan_elahi 0:4cb10c0a8d0c 80 LD_ENABLE.rise(&enableFunc);
hassan_elahi 0:4cb10c0a8d0c 81 LD_ENABLE.fall(&enableFunc);
hassan_elahi 0:4cb10c0a8d0c 82
hassan_elahi 0:4cb10c0a8d0c 83 powerLed = 1;
hassan_elahi 0:4cb10c0a8d0c 84 wait(1);
hassan_elahi 0:4cb10c0a8d0c 85 powerLed = 0;
hassan_elahi 0:4cb10c0a8d0c 86 PFC_ENABLE = 1;
hassan_elahi 0:4cb10c0a8d0c 87
hassan_elahi 0:4cb10c0a8d0c 88 while(1) {
hassan_elahi 0:4cb10c0a8d0c 89 /*
hassan_elahi 0:4cb10c0a8d0c 90 for (int i =0; i<3; i++){
hassan_elahi 0:4cb10c0a8d0c 91 templeds = i;
hassan_elahi 0:4cb10c0a8d0c 92 tempSel = i;
hassan_elahi 0:4cb10c0a8d0c 93 wait_ms(1000);
hassan_elahi 0:4cb10c0a8d0c 94 pc.printf("\n\r %f",temperatures.read());
hassan_elahi 0:4cb10c0a8d0c 95 }*/
hassan_elahi 0:4cb10c0a8d0c 96
hassan_elahi 0:4cb10c0a8d0c 97 //check if there is meassage from LCD
hassan_elahi 0:4cb10c0a8d0c 98 if(LCD.readable()) {
hassan_elahi 0:4cb10c0a8d0c 99
hassan_elahi 0:4cb10c0a8d0c 100 temp = LCD.getc();
hassan_elahi 0:4cb10c0a8d0c 101
hassan_elahi 0:4cb10c0a8d0c 102
hassan_elahi 0:4cb10c0a8d0c 103 if (temp =='A' || temp =='C' ||temp =='E' ||temp =='G' ||temp =='I') {
hassan_elahi 0:4cb10c0a8d0c 104 dataReady = 0;
hassan_elahi 0:4cb10c0a8d0c 105 //package is comming
hassan_elahi 0:4cb10c0a8d0c 106 start = 1;
hassan_elahi 0:4cb10c0a8d0c 107 receivedNumber = 0;
hassan_elahi 0:4cb10c0a8d0c 108 }
hassan_elahi 0:4cb10c0a8d0c 109
hassan_elahi 0:4cb10c0a8d0c 110
hassan_elahi 0:4cb10c0a8d0c 111 if (start)
hassan_elahi 0:4cb10c0a8d0c 112 if (temp =='B' || temp =='D' ||temp =='F' ||temp =='H' ||temp =='J') {
hassan_elahi 0:4cb10c0a8d0c 113 //end of package
hassan_elahi 0:4cb10c0a8d0c 114 start= 0;
hassan_elahi 0:4cb10c0a8d0c 115
hassan_elahi 0:4cb10c0a8d0c 116 //switch was better just laziness
hassan_elahi 0:4cb10c0a8d0c 117 if (temp == 'B'){
hassan_elahi 0:4cb10c0a8d0c 118 //pc.printf (" LOAD %d ",receivedNumber);
hassan_elahi 0:4cb10c0a8d0c 119 if (receivedNumber){
hassan_elahi 0:4cb10c0a8d0c 120 valveLed = 1;
hassan_elahi 0:4cb10c0a8d0c 121 LOAD = 1;
hassan_elahi 0:4cb10c0a8d0c 122 }
hassan_elahi 0:4cb10c0a8d0c 123 else {
hassan_elahi 0:4cb10c0a8d0c 124 valveLed = 0;
hassan_elahi 0:4cb10c0a8d0c 125 LOAD = 0;
hassan_elahi 0:4cb10c0a8d0c 126 }
hassan_elahi 0:4cb10c0a8d0c 127 }
hassan_elahi 0:4cb10c0a8d0c 128 else if (temp == 'D') {
hassan_elahi 0:4cb10c0a8d0c 129 syncState = receivedNumber;
hassan_elahi 0:4cb10c0a8d0c 130 //pc.printf (" syncState %d ",syncState);
hassan_elahi 0:4cb10c0a8d0c 131 }
hassan_elahi 0:4cb10c0a8d0c 132 else if (temp == 'F'){
hassan_elahi 0:4cb10c0a8d0c 133 freq = receivedNumber;
hassan_elahi 0:4cb10c0a8d0c 134 //pc.printf (" freq %d ",freq);
hassan_elahi 0:4cb10c0a8d0c 135 }
hassan_elahi 0:4cb10c0a8d0c 136 else if (temp == 'H'){
hassan_elahi 0:4cb10c0a8d0c 137 amp = receivedNumber;
hassan_elahi 0:4cb10c0a8d0c 138 speed = amp /100.0;
hassan_elahi 0:4cb10c0a8d0c 139 //pc.printf (" amp %d ",amp);
hassan_elahi 0:4cb10c0a8d0c 140 }
hassan_elahi 0:4cb10c0a8d0c 141 else if (temp == 'J'){
hassan_elahi 0:4cb10c0a8d0c 142 dutyCycle = receivedNumber;
hassan_elahi 0:4cb10c0a8d0c 143 //pc.printf (" dutyCycle %d ",dutyCycle);
hassan_elahi 0:4cb10c0a8d0c 144 }
hassan_elahi 0:4cb10c0a8d0c 145
hassan_elahi 0:4cb10c0a8d0c 146 } else {
hassan_elahi 0:4cb10c0a8d0c 147 receivedNumber = temp;
hassan_elahi 0:4cb10c0a8d0c 148
hassan_elahi 0:4cb10c0a8d0c 149 }
hassan_elahi 0:4cb10c0a8d0c 150 }
hassan_elahi 0:4cb10c0a8d0c 151
hassan_elahi 0:4cb10c0a8d0c 152
hassan_elahi 0:4cb10c0a8d0c 153
hassan_elahi 0:4cb10c0a8d0c 154 }
hassan_elahi 0:4cb10c0a8d0c 155 }