AND / Mbed 2 deprecated FeNO_LCD

Dependencies:   mbed TextLCD

Committer:
mehrnaz
Date:
Thu Jul 25 15:25:24 2019 +0000
Revision:
2:bcf033cefa0e
Parent:
1:fd5a598caa32
FeNO LCD code, Commented.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
christodoulos 0:a13b440d4fd1 1 #include "mbed.h"
mehrnaz 2:bcf033cefa0e 2 #include "pressure.h"
mehrnaz 1:fd5a598caa32 3 #include "TextLCD.h"
mehrnaz 2:bcf033cefa0e 4 #include "time.h"
mehrnaz 1:fd5a598caa32 5
mehrnaz 2:bcf033cefa0e 6 /////////////////////////
mehrnaz 2:bcf033cefa0e 7 // User has to hold his breath for 5 second at a correct amount of pressure
mehrnaz 2:bcf033cefa0e 8 // There is an indicator on the LCD which shows the acceptable boundaries
mehrnaz 2:bcf033cefa0e 9 ///////////////////////
mehrnaz 2:bcf033cefa0e 10
mehrnaz 2:bcf033cefa0e 11 //Serial ttl(PA_0, PA_1);
mehrnaz 1:fd5a598caa32 12 PwmOut led(PB_6);
mehrnaz 1:fd5a598caa32 13 TextLCD lcd(PC_8,PC_6,PB_15,PB_14,PB_13,PB_12, TextLCD::LCD16x2);
mehrnaz 2:bcf033cefa0e 14 Timeout t;
mehrnaz 2:bcf033cefa0e 15
mehrnaz 2:bcf033cefa0e 16 int flag1;
mehrnaz 2:bcf033cefa0e 17 float sample2=0;
mehrnaz 2:bcf033cefa0e 18 float sample1;
mehrnaz 2:bcf033cefa0e 19 float delta;
mehrnaz 2:bcf033cefa0e 20 float sample0;
mehrnaz 2:bcf033cefa0e 21 float delta2;
mehrnaz 2:bcf033cefa0e 22 float sample3;
mehrnaz 2:bcf033cefa0e 23 float sample4;
mehrnaz 2:bcf033cefa0e 24 float delta3;
mehrnaz 2:bcf033cefa0e 25 int error1;
mehrnaz 2:bcf033cefa0e 26 int error2;
mehrnaz 2:bcf033cefa0e 27 int U;
mehrnaz 2:bcf033cefa0e 28
mehrnaz 2:bcf033cefa0e 29 //
mehrnaz 2:bcf033cefa0e 30
mehrnaz 2:bcf033cefa0e 31 void okmsg() {
mehrnaz 2:bcf033cefa0e 32 lcd.locate(6,0);
mehrnaz 2:bcf033cefa0e 33 lcd.printf("well done");
mehrnaz 2:bcf033cefa0e 34 flag1=0;
mehrnaz 2:bcf033cefa0e 35 }
mehrnaz 2:bcf033cefa0e 36 void one() {
mehrnaz 2:bcf033cefa0e 37 printf("1...\n");
mehrnaz 2:bcf033cefa0e 38 t.attach(&okmsg, 1.0);
mehrnaz 2:bcf033cefa0e 39 }
mehrnaz 2:bcf033cefa0e 40 void two() {
mehrnaz 2:bcf033cefa0e 41 lcd.locate(6,0);
mehrnaz 2:bcf033cefa0e 42 lcd.printf("hold: 2s ");
mehrnaz 2:bcf033cefa0e 43 t.attach(&one, 1.0);
mehrnaz 2:bcf033cefa0e 44 }
mehrnaz 2:bcf033cefa0e 45 void three() {
mehrnaz 2:bcf033cefa0e 46 lcd.locate(6,0);
mehrnaz 2:bcf033cefa0e 47 lcd.printf("hold: 3s ");
mehrnaz 2:bcf033cefa0e 48 t.attach(&two, 1.0);
mehrnaz 2:bcf033cefa0e 49 }
mehrnaz 2:bcf033cefa0e 50 void four() {
mehrnaz 2:bcf033cefa0e 51 lcd.locate(6,0);
mehrnaz 2:bcf033cefa0e 52 lcd.printf("hold: 4s ");
mehrnaz 2:bcf033cefa0e 53 t.attach(&three, 1.0);
mehrnaz 2:bcf033cefa0e 54 }
mehrnaz 2:bcf033cefa0e 55 void five() {
mehrnaz 2:bcf033cefa0e 56 lcd.locate(6,0);
mehrnaz 2:bcf033cefa0e 57 lcd.printf("hold: 5s ");
mehrnaz 2:bcf033cefa0e 58 t.attach(&four, 1.0);
mehrnaz 2:bcf033cefa0e 59 }
mehrnaz 2:bcf033cefa0e 60 void six() {
mehrnaz 2:bcf033cefa0e 61 lcd.locate(6,0);
mehrnaz 2:bcf033cefa0e 62 lcd.printf("hold: 6s ");
mehrnaz 2:bcf033cefa0e 63 t.attach(&five, 1.0);
mehrnaz 2:bcf033cefa0e 64 }
mehrnaz 2:bcf033cefa0e 65
mehrnaz 2:bcf033cefa0e 66 void counting() {
mehrnaz 2:bcf033cefa0e 67 six();
mehrnaz 2:bcf033cefa0e 68 }
mehrnaz 2:bcf033cefa0e 69
mehrnaz 2:bcf033cefa0e 70 void RED1() {
mehrnaz 2:bcf033cefa0e 71
mehrnaz 2:bcf033cefa0e 72 // At the "Situation 0", which is before breathing into the device,
mehrnaz 2:bcf033cefa0e 73 // we reset everything and ask user to start breathing, set the brightness
mehrnaz 2:bcf033cefa0e 74 // of the LED to the lowest, and detach the timer
mehrnaz 2:bcf033cefa0e 75
mehrnaz 2:bcf033cefa0e 76 sample0=0;
mehrnaz 2:bcf033cefa0e 77 sample2=0;
mehrnaz 2:bcf033cefa0e 78 sample1=0;
mehrnaz 2:bcf033cefa0e 79 sample4=0;
mehrnaz 2:bcf033cefa0e 80 error1=0;
mehrnaz 2:bcf033cefa0e 81 error2=0;
mehrnaz 2:bcf033cefa0e 82 flag1=0;
mehrnaz 2:bcf033cefa0e 83 U=0;
mehrnaz 2:bcf033cefa0e 84 lcd.locate(0,1);
mehrnaz 2:bcf033cefa0e 85 lcd.printf("Start Breathing ");
mehrnaz 2:bcf033cefa0e 86 led.write(0.20f);
mehrnaz 2:bcf033cefa0e 87 t.detach();
mehrnaz 2:bcf033cefa0e 88 }
mehrnaz 2:bcf033cefa0e 89
mehrnaz 2:bcf033cefa0e 90 void Harder(){
mehrnaz 2:bcf033cefa0e 91 if (delta2>0 and error1==0)
mehrnaz 2:bcf033cefa0e 92 {
mehrnaz 2:bcf033cefa0e 93 t.detach();
mehrnaz 2:bcf033cefa0e 94 sample0=0;
mehrnaz 2:bcf033cefa0e 95 sample2=0;
mehrnaz 2:bcf033cefa0e 96 sample1=0;
mehrnaz 2:bcf033cefa0e 97 error1=1;
mehrnaz 2:bcf033cefa0e 98 U=1; //This means that the program is now ready to have the breath in the standard boundaries.
mehrnaz 2:bcf033cefa0e 99 }
mehrnaz 2:bcf033cefa0e 100 }
mehrnaz 2:bcf033cefa0e 101
mehrnaz 2:bcf033cefa0e 102
mehrnaz 1:fd5a598caa32 103
christodoulos 0:a13b440d4fd1 104
christodoulos 0:a13b440d4fd1 105 int main()
christodoulos 0:a13b440d4fd1 106 {
christodoulos 0:a13b440d4fd1 107
mehrnaz 2:bcf033cefa0e 108 pressure();
mehrnaz 1:fd5a598caa32 109 flow();
mehrnaz 2:bcf033cefa0e 110 //ttl.baud(9600);
mehrnaz 2:bcf033cefa0e 111 //first we clear lcd
mehrnaz 1:fd5a598caa32 112 lcd.cls();
mehrnaz 2:bcf033cefa0e 113 //then we define the location to start showing characters from there
mehrnaz 2:bcf033cefa0e 114 lcd.locate(2,0); //column [0 to 15] , row [0,1] : in first row at the 2nd column I put the first line,
mehrnaz 2:bcf033cefa0e 115 lcd.printf("|"); //to show the first acceptable boundary.
mehrnaz 2:bcf033cefa0e 116 lcd.locate(3,0); //in the same row, 3rd column, I put the second boundary.
mehrnaz 1:fd5a598caa32 117 lcd.printf("|");
mehrnaz 2:bcf033cefa0e 118 //lcd.locate(0,1);
mehrnaz 2:bcf033cefa0e 119 //lcd.printf("breathe");
mehrnaz 1:fd5a598caa32 120
mehrnaz 2:bcf033cefa0e 121 int ft=0;
christodoulos 0:a13b440d4fd1 122 while(1) {
mehrnaz 1:fd5a598caa32 123
mehrnaz 2:bcf033cefa0e 124 //lcd.locate(8,0);
mehrnaz 2:bcf033cefa0e 125 printf("f: %3.2f\n", flow());
mehrnaz 1:fd5a598caa32 126
mehrnaz 2:bcf033cefa0e 127 // ttl.printf("flow: %f\n", flow());
mehrnaz 2:bcf033cefa0e 128
mehrnaz 2:bcf033cefa0e 129 //we're making comparasion using pressure because it was more reliable than flow
mehrnaz 2:bcf033cefa0e 130
mehrnaz 2:bcf033cefa0e 131 ////////////////// SITUATION 0: Before Breathing
mehrnaz 2:bcf033cefa0e 132 if (pressure()<180.32)
mehrnaz 2:bcf033cefa0e 133 {
mehrnaz 2:bcf033cefa0e 134 //calls the following funtion which is defined before the main while loop:
mehrnaz 2:bcf033cefa0e 135 RED1();
mehrnaz 2:bcf033cefa0e 136 }
mehrnaz 2:bcf033cefa0e 137
mehrnaz 2:bcf033cefa0e 138
mehrnaz 2:bcf033cefa0e 139 ////////////////// SITUATION 1: Starts Breathing
mehrnaz 2:bcf033cefa0e 140 if (pressure()>=180.32 and pressure()<200)
mehrnaz 1:fd5a598caa32 141 {
mehrnaz 2:bcf033cefa0e 142 sample0=pressure();
mehrnaz 2:bcf033cefa0e 143 delta2=sample1-sample0;
mehrnaz 2:bcf033cefa0e 144 //Naturally, at the beginning, the breath level goes to the situation 1 before situation 2
mehrnaz 2:bcf033cefa0e 145 //so we need to enable a flag called U at the following called function
mehrnaz 2:bcf033cefa0e 146 //so it means that the code is ready for the next stage:
mehrnaz 2:bcf033cefa0e 147 Harder();
mehrnaz 1:fd5a598caa32 148 lcd.locate(0,1);
mehrnaz 2:bcf033cefa0e 149 lcd.printf("** OK ");
mehrnaz 2:bcf033cefa0e 150 led.write(0.20f);
mehrnaz 1:fd5a598caa32 151 }
mehrnaz 2:bcf033cefa0e 152
mehrnaz 2:bcf033cefa0e 153 ////////////////// SITUATION 2: Standard level
mehrnaz 2:bcf033cefa0e 154 if (pressure()>=200 and pressure()<208.44)
mehrnaz 2:bcf033cefa0e 155 {
mehrnaz 2:bcf033cefa0e 156 sample1=pressure();
mehrnaz 2:bcf033cefa0e 157 delta=sample2-sample1;
mehrnaz 2:bcf033cefa0e 158
mehrnaz 2:bcf033cefa0e 159 //If breath level has already reached the previous situation and now is in this situation,
mehrnaz 2:bcf033cefa0e 160 //then it is in a standard level and user has to keep it for 5 seconds
mehrnaz 2:bcf033cefa0e 161
mehrnaz 2:bcf033cefa0e 162 if (U==1){
mehrnaz 2:bcf033cefa0e 163 //the following function activates a series of 7 other functions respectively.
mehrnaz 2:bcf033cefa0e 164 counting();
mehrnaz 2:bcf033cefa0e 165 U=0;
mehrnaz 2:bcf033cefa0e 166 }
mehrnaz 2:bcf033cefa0e 167 if (flag1==0 and delta < 0)
mehrnaz 2:bcf033cefa0e 168 {
mehrnaz 2:bcf033cefa0e 169 flag1=1;
mehrnaz 2:bcf033cefa0e 170 //the following function activates a series of 7 other functions respectively.
mehrnaz 2:bcf033cefa0e 171 counting();
mehrnaz 2:bcf033cefa0e 172 }
mehrnaz 2:bcf033cefa0e 173 lcd.locate(0,1);
mehrnaz 2:bcf033cefa0e 174 lcd.printf("*** Good ");
mehrnaz 2:bcf033cefa0e 175 led.write(0.40f);
mehrnaz 2:bcf033cefa0e 176 }
mehrnaz 2:bcf033cefa0e 177
mehrnaz 2:bcf033cefa0e 178 ////////////////// SITUATION 3: Perfect level
mehrnaz 2:bcf033cefa0e 179 if (pressure()>=208.44 and pressure()<238.48)
mehrnaz 1:fd5a598caa32 180 {
mehrnaz 1:fd5a598caa32 181 lcd.locate(0,1);
mehrnaz 2:bcf033cefa0e 182 lcd.printf("**** Perfect ");
mehrnaz 2:bcf033cefa0e 183 led.write(0.60f);
mehrnaz 2:bcf033cefa0e 184 sample2=pressure();
mehrnaz 1:fd5a598caa32 185 }
mehrnaz 2:bcf033cefa0e 186
mehrnaz 2:bcf033cefa0e 187 ////////////////// SITUATION 4: Standard level
mehrnaz 2:bcf033cefa0e 188 if (pressure()>=238.248 and pressure()<270.55)
mehrnaz 1:fd5a598caa32 189 {
mehrnaz 2:bcf033cefa0e 190 sample3=pressure();
mehrnaz 2:bcf033cefa0e 191 delta3=sample4-sample3;
mehrnaz 2:bcf033cefa0e 192 if(delta3>0){
mehrnaz 2:bcf033cefa0e 193 counting();
mehrnaz 2:bcf033cefa0e 194 sample4=0;
mehrnaz 2:bcf033cefa0e 195 }
mehrnaz 1:fd5a598caa32 196 lcd.locate(0,1);
mehrnaz 2:bcf033cefa0e 197 lcd.printf("***** Good ");
mehrnaz 1:fd5a598caa32 198 led.write(0.80f);
mehrnaz 1:fd5a598caa32 199 }
mehrnaz 2:bcf033cefa0e 200
mehrnaz 2:bcf033cefa0e 201 ////////////////// SITUATION 5: Too hard level
mehrnaz 2:bcf033cefa0e 202 if (pressure()>=270.55)
mehrnaz 1:fd5a598caa32 203 {
mehrnaz 2:bcf033cefa0e 204 sample4=pressure();
mehrnaz 2:bcf033cefa0e 205 if (error2==0){
mehrnaz 2:bcf033cefa0e 206 sample0=0;
mehrnaz 2:bcf033cefa0e 207 sample2=0;
mehrnaz 2:bcf033cefa0e 208 sample1=0;
mehrnaz 2:bcf033cefa0e 209 t.detach();
mehrnaz 2:bcf033cefa0e 210 error2=1;
mehrnaz 2:bcf033cefa0e 211 }
mehrnaz 1:fd5a598caa32 212 lcd.locate(0,1);
mehrnaz 2:bcf033cefa0e 213 lcd.printf("Breathe softer ");
mehrnaz 1:fd5a598caa32 214 led.write(1.00f);
mehrnaz 1:fd5a598caa32 215 }
mehrnaz 1:fd5a598caa32 216 // lcd.printf("%f\n", flow());
mehrnaz 2:bcf033cefa0e 217 wait (0.1);
mehrnaz 1:fd5a598caa32 218
christodoulos 0:a13b440d4fd1 219 }
christodoulos 0:a13b440d4fd1 220 }