legionella detector

Dependencies:   mbed

Committer:
lewiscameron
Date:
Tue Aug 23 12:49:09 2022 +0000
Revision:
3:eaa6fbb8fd87
Parent:
2:9d6daa8a091c
Child:
4:b82f09e597ec
done

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lewiscameron 0:089b4c4f2b6f 1
lewiscameron 0:089b4c4f2b6f 2 // importing the libraries
lewiscameron 0:089b4c4f2b6f 3 #include "mbed.h"
lewiscameron 0:089b4c4f2b6f 4 #include "TMP102.h"
lewiscameron 0:089b4c4f2b6f 5 #include "N5110.h"
lewiscameron 0:089b4c4f2b6f 6 #include "Joystick.h"
lewiscameron 0:089b4c4f2b6f 7 #include "Bitmap.h"
lewiscameron 0:089b4c4f2b6f 8
lewiscameron 0:089b4c4f2b6f 9 //Buttons
lewiscameron 0:089b4c4f2b6f 10 InterruptIn button_back(PTB19);
lewiscameron 0:089b4c4f2b6f 11 InterruptIn button_start(PTC5);
lewiscameron 0:089b4c4f2b6f 12 InterruptIn button_a(PTB9);
lewiscameron 0:089b4c4f2b6f 13 InterruptIn button_b(PTD0);
lewiscameron 0:089b4c4f2b6f 14 InterruptIn button_x(PTC17);
lewiscameron 0:089b4c4f2b6f 15 InterruptIn button_y(PTC12);
lewiscameron 0:089b4c4f2b6f 16 InterruptIn button_left(PTB18);
lewiscameron 0:089b4c4f2b6f 17 InterruptIn button_right(PTB3);
lewiscameron 0:089b4c4f2b6f 18 InterruptIn sw2(SW2);
lewiscameron 0:089b4c4f2b6f 19 InterruptIn sw3(SW3);
lewiscameron 0:089b4c4f2b6f 20
lewiscameron 0:089b4c4f2b6f 21 //LEDs
lewiscameron 0:089b4c4f2b6f 22 PwmOut led_red1(PTA1);
lewiscameron 0:089b4c4f2b6f 23 PwmOut led_red2(PTA2);
lewiscameron 0:089b4c4f2b6f 24 PwmOut led_red3(PTC2);
lewiscameron 0:089b4c4f2b6f 25 PwmOut led_green1(PTC3);
lewiscameron 0:089b4c4f2b6f 26 PwmOut led_green2(PTC4);
lewiscameron 0:089b4c4f2b6f 27 PwmOut led_green3(PTD3);
lewiscameron 0:089b4c4f2b6f 28 DigitalOut boardled_red(LED_RED);
lewiscameron 0:089b4c4f2b6f 29 DigitalOut boardled_green(LED_GREEN);
lewiscameron 0:089b4c4f2b6f 30 DigitalOut boardled_blue(LED_BLUE);
lewiscameron 0:089b4c4f2b6f 31
lewiscameron 0:089b4c4f2b6f 32 // Joystick, LCD & TMP102
lewiscameron 0:089b4c4f2b6f 33 Joystick Joystick(PTB10,PTB11,PTB16);
lewiscameron 0:089b4c4f2b6f 34 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
lewiscameron 0:089b4c4f2b6f 35 TMP102 tmp(I2C_SDA,I2C_SCL);
lewiscameron 0:089b4c4f2b6f 36
lewiscameron 0:089b4c4f2b6f 37 //Piezo
lewiscameron 0:089b4c4f2b6f 38 PwmOut piezo(PTC10);
lewiscameron 0:089b4c4f2b6f 39
lewiscameron 0:089b4c4f2b6f 40 //serial
lewiscameron 0:089b4c4f2b6f 41 Serial pc(USBTX,USBRX);
lewiscameron 0:089b4c4f2b6f 42
lewiscameron 0:089b4c4f2b6f 43 // variables
lewiscameron 0:089b4c4f2b6f 44 volatile int button_a_flag = 0;
lewiscameron 0:089b4c4f2b6f 45 volatile int button_b_flag = 0;
lewiscameron 0:089b4c4f2b6f 46 volatile int button_x_flag = 0;
lewiscameron 0:089b4c4f2b6f 47 volatile int button_y_flag = 0;
lewiscameron 0:089b4c4f2b6f 48 volatile int button_left_flag = 0;
lewiscameron 0:089b4c4f2b6f 49 volatile int button_right_flag = 0;
lewiscameron 0:089b4c4f2b6f 50 volatile int button_back_flag = 0;
lewiscameron 0:089b4c4f2b6f 51 volatile int button_start_flag = 0;
lewiscameron 0:089b4c4f2b6f 52 volatile int CwsHiSP = 20;
lewiscameron 0:089b4c4f2b6f 53 volatile int HwsKaSP = 70;
lewiscameron 0:089b4c4f2b6f 54 volatile int HwsLoLimSP = 50;
lewiscameron 0:089b4c4f2b6f 55 volatile int CustomLoSP = 10;
lewiscameron 0:089b4c4f2b6f 56 volatile int CustomLoSPChange = 0;
lewiscameron 0:089b4c4f2b6f 57 volatile int CustomHiSP = 20;
lewiscameron 0:089b4c4f2b6f 58 volatile int CustomHiSPChange = 0;
lewiscameron 0:089b4c4f2b6f 59
lewiscameron 0:089b4c4f2b6f 60 // voids
lewiscameron 0:089b4c4f2b6f 61 // functions that will be used in the code
lewiscameron 0:089b4c4f2b6f 62 //void error();
lewiscameron 0:089b4c4f2b6f 63 void init_serial(); // sets up serial
lewiscameron 0:089b4c4f2b6f 64 void init_K64F(); // sets up K64F
lewiscameron 0:089b4c4f2b6f 65 void init_pcb(); // sets up the pcb
lewiscameron 0:089b4c4f2b6f 66
lewiscameron 0:089b4c4f2b6f 67 // button voids
lewiscameron 1:87661a0c8ba3 68 void button_a_isr();
lewiscameron 1:87661a0c8ba3 69 void button_b_isr();
lewiscameron 1:87661a0c8ba3 70 void button_x_isr();
lewiscameron 1:87661a0c8ba3 71 void button_y_isr();
lewiscameron 1:87661a0c8ba3 72 void button_left_isr();
lewiscameron 1:87661a0c8ba3 73 void button_right_isr();
lewiscameron 1:87661a0c8ba3 74 void button_back_isr();
lewiscameron 1:87661a0c8ba3 75 void button_start_isr();
lewiscameron 0:089b4c4f2b6f 76
lewiscameron 0:089b4c4f2b6f 77 // page voids
lewiscameron 0:089b4c4f2b6f 78 void startup();
lewiscameron 0:089b4c4f2b6f 79 void cwshigh();
lewiscameron 0:089b4c4f2b6f 80 void codeloop();
lewiscameron 0:089b4c4f2b6f 81 void get_temp();
lewiscameron 0:089b4c4f2b6f 82 void CustHi_SP();
lewiscameron 0:089b4c4f2b6f 83 void CustLo_SP();
lewiscameron 3:eaa6fbb8fd87 84 void ShowSP();
lewiscameron 3:eaa6fbb8fd87 85
lewiscameron 3:eaa6fbb8fd87 86 //State structure
lewiscameron 3:eaa6fbb8fd87 87 struct State {
lewiscameron 3:eaa6fbb8fd87 88 //Output Setpoint
lewiscameron 3:eaa6fbb8fd87 89 int output;
lewiscameron 3:eaa6fbb8fd87 90 //Time delay while in state
lewiscameron 3:eaa6fbb8fd87 91 float time;
lewiscameron 3:eaa6fbb8fd87 92 //Next states array and length
lewiscameron 3:eaa6fbb8fd87 93 int nextState[9];
lewiscameron 3:eaa6fbb8fd87 94 };
lewiscameron 0:089b4c4f2b6f 95
lewiscameron 0:089b4c4f2b6f 96
lewiscameron 0:089b4c4f2b6f 97
lewiscameron 0:089b4c4f2b6f 98
lewiscameron 0:089b4c4f2b6f 99 int main() {
lewiscameron 0:089b4c4f2b6f 100
lewiscameron 0:089b4c4f2b6f 101 // interrupts setup
lewiscameron 1:87661a0c8ba3 102 button_a.rise(&button_a_isr);
lewiscameron 1:87661a0c8ba3 103 button_b.rise(&button_b_isr);
lewiscameron 1:87661a0c8ba3 104 button_x.rise(&button_x_isr);
lewiscameron 1:87661a0c8ba3 105 button_y.rise(&button_y_isr);
lewiscameron 1:87661a0c8ba3 106 button_left.rise(&button_left_isr);
lewiscameron 1:87661a0c8ba3 107 button_right.rise(&button_right_isr);
lewiscameron 1:87661a0c8ba3 108 button_back.rise(&button_back_isr);
lewiscameron 1:87661a0c8ba3 109 button_start.rise(&button_start_isr);
lewiscameron 0:089b4c4f2b6f 110
lewiscameron 0:089b4c4f2b6f 111
lewiscameron 0:089b4c4f2b6f 112
lewiscameron 0:089b4c4f2b6f 113 init_serial();
lewiscameron 0:089b4c4f2b6f 114 init_K64F();
lewiscameron 0:089b4c4f2b6f 115 init_pcb();
lewiscameron 0:089b4c4f2b6f 116 tmp.init();
lewiscameron 0:089b4c4f2b6f 117 lcd.init();
lewiscameron 0:089b4c4f2b6f 118 Joystick.init();
lewiscameron 0:089b4c4f2b6f 119
lewiscameron 3:eaa6fbb8fd87 120 lcd.setContrast(1);
lewiscameron 0:089b4c4f2b6f 121 lcd.setBrightness(0.5);
lewiscameron 0:089b4c4f2b6f 122
lewiscameron 0:089b4c4f2b6f 123 startup();
lewiscameron 0:089b4c4f2b6f 124
lewiscameron 0:089b4c4f2b6f 125 codeloop();
lewiscameron 0:089b4c4f2b6f 126
lewiscameron 0:089b4c4f2b6f 127
lewiscameron 0:089b4c4f2b6f 128
lewiscameron 0:089b4c4f2b6f 129 }
lewiscameron 0:089b4c4f2b6f 130
lewiscameron 0:089b4c4f2b6f 131 // initialise serial connection
lewiscameron 0:089b4c4f2b6f 132 void init_serial()
lewiscameron 0:089b4c4f2b6f 133 {
lewiscameron 0:089b4c4f2b6f 134 pc.baud(9600);
lewiscameron 0:089b4c4f2b6f 135 }
lewiscameron 0:089b4c4f2b6f 136
lewiscameron 0:089b4c4f2b6f 137 void init_K64F()
lewiscameron 0:089b4c4f2b6f 138 {
lewiscameron 0:089b4c4f2b6f 139 boardled_red = 1;
lewiscameron 0:089b4c4f2b6f 140 boardled_green = 1;
lewiscameron 0:089b4c4f2b6f 141 boardled_blue = 1;
lewiscameron 0:089b4c4f2b6f 142
lewiscameron 0:089b4c4f2b6f 143 sw2.mode(PullNone);
lewiscameron 0:089b4c4f2b6f 144 sw3.mode(PullNone);
lewiscameron 0:089b4c4f2b6f 145 }
lewiscameron 0:089b4c4f2b6f 146
lewiscameron 0:089b4c4f2b6f 147 void init_pcb()
lewiscameron 0:089b4c4f2b6f 148 {
lewiscameron 0:089b4c4f2b6f 149
lewiscameron 0:089b4c4f2b6f 150 led_red1 = 1;
lewiscameron 0:089b4c4f2b6f 151 led_red2 = 1;
lewiscameron 0:089b4c4f2b6f 152 led_red3 = 1;
lewiscameron 0:089b4c4f2b6f 153 led_green1 = 1;
lewiscameron 0:089b4c4f2b6f 154 led_green2 = 1;
lewiscameron 0:089b4c4f2b6f 155 led_green3 = 1;
lewiscameron 0:089b4c4f2b6f 156 // active low LED's so off when = 1
lewiscameron 0:089b4c4f2b6f 157
lewiscameron 0:089b4c4f2b6f 158 // sets up the PCB Buttons
lewiscameron 0:089b4c4f2b6f 159 button_a.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 160 button_b.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 161 button_x.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 162 button_y.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 163 button_left.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 164 button_right.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 165 button_start.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 166 button_back.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 167 }
lewiscameron 0:089b4c4f2b6f 168
lewiscameron 0:089b4c4f2b6f 169 void startup()
lewiscameron 0:089b4c4f2b6f 170 {
lewiscameron 0:089b4c4f2b6f 171 lcd.printString("Lewis Cameron",0,0);
lewiscameron 0:089b4c4f2b6f 172 lcd.printString("18689002",0,1);
lewiscameron 3:eaa6fbb8fd87 173 lcd.printString("Legionella",0,2);
lewiscameron 3:eaa6fbb8fd87 174 lcd.printString("Sensor",0,3);
lewiscameron 3:eaa6fbb8fd87 175 lcd.printString("w/ Custom SP",0,4);
lewiscameron 0:089b4c4f2b6f 176 pc.printf("startup");
lewiscameron 0:089b4c4f2b6f 177 lcd.refresh();
lewiscameron 0:089b4c4f2b6f 178 wait(5);
lewiscameron 0:089b4c4f2b6f 179 }
lewiscameron 0:089b4c4f2b6f 180
lewiscameron 0:089b4c4f2b6f 181 void codeloop()
lewiscameron 0:089b4c4f2b6f 182 {
lewiscameron 0:089b4c4f2b6f 183 int page;
lewiscameron 0:089b4c4f2b6f 184
lewiscameron 0:089b4c4f2b6f 185 while(1){
lewiscameron 0:089b4c4f2b6f 186 lcd.clear();
lewiscameron 0:089b4c4f2b6f 187
lewiscameron 0:089b4c4f2b6f 188 switch(page){
lewiscameron 0:089b4c4f2b6f 189
lewiscameron 0:089b4c4f2b6f 190 case 1:
lewiscameron 0:089b4c4f2b6f 191 {
lewiscameron 0:089b4c4f2b6f 192
lewiscameron 0:089b4c4f2b6f 193 init_pcb();
lewiscameron 0:089b4c4f2b6f 194
lewiscameron 0:089b4c4f2b6f 195 float temp = tmp.get_temperature();
lewiscameron 0:089b4c4f2b6f 196
lewiscameron 0:089b4c4f2b6f 197
lewiscameron 0:089b4c4f2b6f 198 lcd.clear();
lewiscameron 3:eaa6fbb8fd87 199 lcd.printString("CWS",30,0);
lewiscameron 3:eaa6fbb8fd87 200 lcd.printString("Temp =",0,1);
lewiscameron 0:089b4c4f2b6f 201 get_temp();
lewiscameron 3:eaa6fbb8fd87 202 lcd.printString("Back = Home",0,5);
lewiscameron 3:eaa6fbb8fd87 203 pc.printf("CWS");
lewiscameron 0:089b4c4f2b6f 204
lewiscameron 0:089b4c4f2b6f 205 if (temp >= CwsHiSP){
lewiscameron 3:eaa6fbb8fd87 206 lcd.printString("CWS Temp High",0,2);
lewiscameron 3:eaa6fbb8fd87 207 lcd.printString("Legionella",0,3);
lewiscameron 3:eaa6fbb8fd87 208 lcd.printString("Warning",0,4);
lewiscameron 0:089b4c4f2b6f 209 led_red1 = 0;
lewiscameron 3:eaa6fbb8fd87 210 pc.printf("CWS High Temp");
lewiscameron 0:089b4c4f2b6f 211 }
lewiscameron 0:089b4c4f2b6f 212
lewiscameron 0:089b4c4f2b6f 213 else if (temp < CwsHiSP){
lewiscameron 3:eaa6fbb8fd87 214 lcd.printString("Temp OK",0,2);
lewiscameron 3:eaa6fbb8fd87 215 lcd.printString("No Danger",0,3);
lewiscameron 3:eaa6fbb8fd87 216 lcd.printString("Of Legionella",0,4);
lewiscameron 0:089b4c4f2b6f 217 led_red1 = 1;
lewiscameron 3:eaa6fbb8fd87 218 pc.printf("CWS Temp OK");
lewiscameron 0:089b4c4f2b6f 219 }
lewiscameron 0:089b4c4f2b6f 220
lewiscameron 0:089b4c4f2b6f 221 if (button_back_flag) {
lewiscameron 0:089b4c4f2b6f 222 button_back_flag = 0;
lewiscameron 0:089b4c4f2b6f 223 page = 0;
lewiscameron 0:089b4c4f2b6f 224 }
lewiscameron 3:eaa6fbb8fd87 225 lcd.refresh();
lewiscameron 0:089b4c4f2b6f 226 }
lewiscameron 0:089b4c4f2b6f 227 break;
lewiscameron 0:089b4c4f2b6f 228
lewiscameron 0:089b4c4f2b6f 229 case 2:
lewiscameron 0:089b4c4f2b6f 230 {
lewiscameron 0:089b4c4f2b6f 231
lewiscameron 0:089b4c4f2b6f 232 init_pcb();
lewiscameron 0:089b4c4f2b6f 233 float temp = tmp.get_temperature();
lewiscameron 0:089b4c4f2b6f 234
lewiscameron 0:089b4c4f2b6f 235 lcd.clear();
lewiscameron 3:eaa6fbb8fd87 236 lcd.printString("HWS",30,0);
lewiscameron 3:eaa6fbb8fd87 237 lcd.printString("Temp =",0,1);
lewiscameron 0:089b4c4f2b6f 238 get_temp();
lewiscameron 3:eaa6fbb8fd87 239 lcd.printString("Back = Home",0,5);
lewiscameron 0:089b4c4f2b6f 240
lewiscameron 3:eaa6fbb8fd87 241 if (HwsLoLimSP < temp & temp < HwsKaSP){
lewiscameron 3:eaa6fbb8fd87 242 lcd.printString("Temp Raised",0,2);
lewiscameron 3:eaa6fbb8fd87 243 lcd.printString("Killing",0,3);
lewiscameron 3:eaa6fbb8fd87 244 lcd.printString("Legionella",0,4);
lewiscameron 0:089b4c4f2b6f 245 led_green1 = 0;
lewiscameron 0:089b4c4f2b6f 246 }
lewiscameron 0:089b4c4f2b6f 247
lewiscameron 0:089b4c4f2b6f 248 else if (temp >= HwsKaSP){
lewiscameron 3:eaa6fbb8fd87 249 lcd.printString("Temp Raised",0,2);
lewiscameron 3:eaa6fbb8fd87 250 lcd.printString("No Danger",0,3);
lewiscameron 3:eaa6fbb8fd87 251 lcd.printString("Of Legionella",0,4);
lewiscameron 0:089b4c4f2b6f 252 led_green1 = 0;
lewiscameron 0:089b4c4f2b6f 253 led_green2 = 0;
lewiscameron 0:089b4c4f2b6f 254 }
lewiscameron 0:089b4c4f2b6f 255
lewiscameron 0:089b4c4f2b6f 256 else if (temp < HwsLoLimSP){
lewiscameron 3:eaa6fbb8fd87 257 lcd.printString("Temp Low",0,2);
lewiscameron 3:eaa6fbb8fd87 258 lcd.printString("Legionella",0,3);
lewiscameron 3:eaa6fbb8fd87 259 lcd.printString("Warning",0,4);
lewiscameron 0:089b4c4f2b6f 260 led_red1 = 0;
lewiscameron 0:089b4c4f2b6f 261 }
lewiscameron 0:089b4c4f2b6f 262
lewiscameron 0:089b4c4f2b6f 263 if (button_back_flag) {
lewiscameron 0:089b4c4f2b6f 264 button_back_flag = 0;
lewiscameron 0:089b4c4f2b6f 265 page = 0;
lewiscameron 0:089b4c4f2b6f 266 }
lewiscameron 0:089b4c4f2b6f 267
lewiscameron 3:eaa6fbb8fd87 268 lcd.refresh();
lewiscameron 3:eaa6fbb8fd87 269
lewiscameron 0:089b4c4f2b6f 270 }
lewiscameron 0:089b4c4f2b6f 271
lewiscameron 0:089b4c4f2b6f 272
lewiscameron 0:089b4c4f2b6f 273
lewiscameron 0:089b4c4f2b6f 274 break;
lewiscameron 0:089b4c4f2b6f 275
lewiscameron 0:089b4c4f2b6f 276 case 3:
lewiscameron 0:089b4c4f2b6f 277 {
lewiscameron 0:089b4c4f2b6f 278
lewiscameron 0:089b4c4f2b6f 279 init_pcb();
lewiscameron 3:eaa6fbb8fd87 280 float temp = tmp.get_temperature();
lewiscameron 3:eaa6fbb8fd87 281
lewiscameron 0:089b4c4f2b6f 282 lcd.clear();
lewiscameron 0:089b4c4f2b6f 283
lewiscameron 3:eaa6fbb8fd87 284 lcd.printString("Custom SP",15,0);
lewiscameron 3:eaa6fbb8fd87 285 lcd.printString("Temp =",0,1);
lewiscameron 0:089b4c4f2b6f 286 get_temp();
lewiscameron 0:089b4c4f2b6f 287 CustHi_SP();
lewiscameron 0:089b4c4f2b6f 288 CustLo_SP();
lewiscameron 3:eaa6fbb8fd87 289 ShowSP();
lewiscameron 3:eaa6fbb8fd87 290 lcd.printString("Back = Home",0,5);
lewiscameron 3:eaa6fbb8fd87 291
lewiscameron 3:eaa6fbb8fd87 292 if (CustomLoSP < temp & temp < CustomHiSP){
lewiscameron 3:eaa6fbb8fd87 293 lcd.printString("Temp In Range",0,4);
lewiscameron 3:eaa6fbb8fd87 294 led_green1 = 0;
lewiscameron 3:eaa6fbb8fd87 295 }
lewiscameron 3:eaa6fbb8fd87 296
lewiscameron 3:eaa6fbb8fd87 297 else if (temp > CustomHiSP){
lewiscameron 3:eaa6fbb8fd87 298 lcd.printString("High Temp",0,4);
lewiscameron 3:eaa6fbb8fd87 299 led_red1 = 0;
lewiscameron 3:eaa6fbb8fd87 300 }
lewiscameron 3:eaa6fbb8fd87 301
lewiscameron 3:eaa6fbb8fd87 302 else if (temp < CustomLoSP){
lewiscameron 3:eaa6fbb8fd87 303 lcd.printString("Low Temp",0,4);
lewiscameron 3:eaa6fbb8fd87 304 led_red2 = 0;
lewiscameron 3:eaa6fbb8fd87 305 }
lewiscameron 0:089b4c4f2b6f 306
lewiscameron 0:089b4c4f2b6f 307 if (button_back_flag) {
lewiscameron 0:089b4c4f2b6f 308 button_back_flag = 0;
lewiscameron 0:089b4c4f2b6f 309 page = 0;
lewiscameron 0:089b4c4f2b6f 310 }
lewiscameron 3:eaa6fbb8fd87 311 lcd.refresh();
lewiscameron 0:089b4c4f2b6f 312
lewiscameron 0:089b4c4f2b6f 313 }
lewiscameron 0:089b4c4f2b6f 314
lewiscameron 0:089b4c4f2b6f 315 break;
lewiscameron 0:089b4c4f2b6f 316
lewiscameron 0:089b4c4f2b6f 317 case 4:
lewiscameron 0:089b4c4f2b6f 318 {
lewiscameron 0:089b4c4f2b6f 319 init_pcb();
lewiscameron 0:089b4c4f2b6f 320 lcd.clear();
lewiscameron 3:eaa6fbb8fd87 321 lcd.printString("Info",26,0);
lewiscameron 3:eaa6fbb8fd87 322 lcd.printString("Legionella",0,1);
lewiscameron 3:eaa6fbb8fd87 323 lcd.printString("Detector",0,2);
lewiscameron 3:eaa6fbb8fd87 324 lcd.printString("Lewis Cameron",0,3);
lewiscameron 3:eaa6fbb8fd87 325 lcd.printString("18689002",0,4);
lewiscameron 3:eaa6fbb8fd87 326 lcd.printString("Back = Home",0,5);
lewiscameron 3:eaa6fbb8fd87 327 lcd.refresh();
lewiscameron 0:089b4c4f2b6f 328
lewiscameron 0:089b4c4f2b6f 329 if (button_back_flag) {
lewiscameron 0:089b4c4f2b6f 330 button_back_flag = 0;
lewiscameron 0:089b4c4f2b6f 331 page = 0;
lewiscameron 0:089b4c4f2b6f 332 }
lewiscameron 0:089b4c4f2b6f 333
lewiscameron 0:089b4c4f2b6f 334 }
lewiscameron 0:089b4c4f2b6f 335
lewiscameron 0:089b4c4f2b6f 336
lewiscameron 0:089b4c4f2b6f 337
lewiscameron 0:089b4c4f2b6f 338 break;
lewiscameron 0:089b4c4f2b6f 339 {
lewiscameron 0:089b4c4f2b6f 340 default:
lewiscameron 0:089b4c4f2b6f 341 init_pcb();
lewiscameron 0:089b4c4f2b6f 342 lcd.clear();
lewiscameron 0:089b4c4f2b6f 343
lewiscameron 3:eaa6fbb8fd87 344 lcd.printString("Main Menu",15,0);
lewiscameron 0:089b4c4f2b6f 345 lcd.printString("A = Cold Water",0,1);
lewiscameron 0:089b4c4f2b6f 346 lcd.printString("B = Hot Water",0,2);
lewiscameron 0:089b4c4f2b6f 347 lcd.printString("X = Custom SP",0,3);
lewiscameron 0:089b4c4f2b6f 348 lcd.printString("Y = Info",0,4);
lewiscameron 0:089b4c4f2b6f 349 lcd.refresh();
lewiscameron 0:089b4c4f2b6f 350
lewiscameron 0:089b4c4f2b6f 351 if (button_a_flag) {
lewiscameron 0:089b4c4f2b6f 352 button_a_flag = 0;
lewiscameron 0:089b4c4f2b6f 353 page = 1;
lewiscameron 3:eaa6fbb8fd87 354 pc.printf("A Pressed");
lewiscameron 0:089b4c4f2b6f 355 }
lewiscameron 0:089b4c4f2b6f 356
lewiscameron 0:089b4c4f2b6f 357 if (button_b_flag) {
lewiscameron 0:089b4c4f2b6f 358 button_b_flag = 0;
lewiscameron 0:089b4c4f2b6f 359 page = 2;
lewiscameron 3:eaa6fbb8fd87 360 pc.printf("B Pressed");
lewiscameron 0:089b4c4f2b6f 361 }
lewiscameron 0:089b4c4f2b6f 362
lewiscameron 0:089b4c4f2b6f 363 if (button_x_flag) {
lewiscameron 0:089b4c4f2b6f 364 button_x_flag = 0;
lewiscameron 0:089b4c4f2b6f 365 page = 3;
lewiscameron 3:eaa6fbb8fd87 366 pc.printf("X Pressed");
lewiscameron 0:089b4c4f2b6f 367 }
lewiscameron 0:089b4c4f2b6f 368
lewiscameron 0:089b4c4f2b6f 369 if (button_y_flag) {
lewiscameron 0:089b4c4f2b6f 370 button_y_flag = 0;
lewiscameron 0:089b4c4f2b6f 371 page = 4;
lewiscameron 3:eaa6fbb8fd87 372 pc.printf("Y Pressed");
lewiscameron 0:089b4c4f2b6f 373 }
lewiscameron 0:089b4c4f2b6f 374
lewiscameron 0:089b4c4f2b6f 375 }
lewiscameron 0:089b4c4f2b6f 376 }
lewiscameron 1:87661a0c8ba3 377
lewiscameron 0:089b4c4f2b6f 378 }
lewiscameron 1:87661a0c8ba3 379 }
lewiscameron 1:87661a0c8ba3 380
lewiscameron 1:87661a0c8ba3 381
lewiscameron 0:089b4c4f2b6f 382
lewiscameron 1:87661a0c8ba3 383 void button_a_isr()
lewiscameron 0:089b4c4f2b6f 384 {
lewiscameron 0:089b4c4f2b6f 385 button_a_flag = 1;
lewiscameron 0:089b4c4f2b6f 386 }
lewiscameron 0:089b4c4f2b6f 387
lewiscameron 1:87661a0c8ba3 388 void button_b_isr()
lewiscameron 0:089b4c4f2b6f 389 {
lewiscameron 0:089b4c4f2b6f 390 button_b_flag = 1;
lewiscameron 0:089b4c4f2b6f 391 }
lewiscameron 0:089b4c4f2b6f 392
lewiscameron 1:87661a0c8ba3 393 void button_x_isr()
lewiscameron 0:089b4c4f2b6f 394 {
lewiscameron 0:089b4c4f2b6f 395 button_x_flag = 1;
lewiscameron 0:089b4c4f2b6f 396 }
lewiscameron 0:089b4c4f2b6f 397
lewiscameron 1:87661a0c8ba3 398 void button_y_isr()
lewiscameron 0:089b4c4f2b6f 399 {
lewiscameron 0:089b4c4f2b6f 400 button_y_flag = 1;
lewiscameron 0:089b4c4f2b6f 401 }
lewiscameron 0:089b4c4f2b6f 402
lewiscameron 1:87661a0c8ba3 403 void button_left_isr()
lewiscameron 0:089b4c4f2b6f 404 {
lewiscameron 0:089b4c4f2b6f 405 button_left_flag = 1;
lewiscameron 0:089b4c4f2b6f 406 }
lewiscameron 0:089b4c4f2b6f 407
lewiscameron 1:87661a0c8ba3 408 void button_right_isr()
lewiscameron 0:089b4c4f2b6f 409 {
lewiscameron 0:089b4c4f2b6f 410 button_right_flag = 1;
lewiscameron 0:089b4c4f2b6f 411 }
lewiscameron 0:089b4c4f2b6f 412
lewiscameron 1:87661a0c8ba3 413 void button_back_isr()
lewiscameron 0:089b4c4f2b6f 414 {
lewiscameron 0:089b4c4f2b6f 415 button_back_flag = 1;
lewiscameron 0:089b4c4f2b6f 416 }
lewiscameron 0:089b4c4f2b6f 417
lewiscameron 0:089b4c4f2b6f 418
lewiscameron 1:87661a0c8ba3 419 void button_start_isr()
lewiscameron 0:089b4c4f2b6f 420 {
lewiscameron 0:089b4c4f2b6f 421 button_start_flag = 1;
lewiscameron 0:089b4c4f2b6f 422 }
lewiscameron 0:089b4c4f2b6f 423
lewiscameron 1:87661a0c8ba3 424 void cwshigh()
lewiscameron 0:089b4c4f2b6f 425 {
lewiscameron 0:089b4c4f2b6f 426 lcd.printString("Water Temp Too High",0,3);
lewiscameron 0:089b4c4f2b6f 427 led_red1 = 0;
lewiscameron 0:089b4c4f2b6f 428 }
lewiscameron 0:089b4c4f2b6f 429
lewiscameron 1:87661a0c8ba3 430 void get_temp()
lewiscameron 0:089b4c4f2b6f 431 {
lewiscameron 0:089b4c4f2b6f 432 char buffer[14];
lewiscameron 0:089b4c4f2b6f 433 float temp = tmp.get_temperature();
lewiscameron 0:089b4c4f2b6f 434 int length = sprintf(buffer,"%.2f C",temp);
lewiscameron 0:089b4c4f2b6f 435 //pc.printf("temp = %f K\n",temp);
lewiscameron 0:089b4c4f2b6f 436 if (length <=14)
lewiscameron 3:eaa6fbb8fd87 437 lcd.printString(buffer,38,1);
lewiscameron 0:089b4c4f2b6f 438
lewiscameron 0:089b4c4f2b6f 439 }
lewiscameron 0:089b4c4f2b6f 440
lewiscameron 1:87661a0c8ba3 441 void CustHi_SP()
lewiscameron 0:089b4c4f2b6f 442 {
lewiscameron 0:089b4c4f2b6f 443 Direction d = Joystick.get_direction();
lewiscameron 0:089b4c4f2b6f 444
lewiscameron 0:089b4c4f2b6f 445
lewiscameron 3:eaa6fbb8fd87 446 if (d == W) {
lewiscameron 3:eaa6fbb8fd87 447 pc.printf("Joystick Left");
lewiscameron 3:eaa6fbb8fd87 448 CustomHiSP = CustomHiSP - 1;
lewiscameron 0:089b4c4f2b6f 449 wait(0.5);
lewiscameron 0:089b4c4f2b6f 450 }
lewiscameron 0:089b4c4f2b6f 451
lewiscameron 3:eaa6fbb8fd87 452 if (d == E) {
lewiscameron 3:eaa6fbb8fd87 453 pc.printf("Joystick Right");
lewiscameron 3:eaa6fbb8fd87 454 CustomHiSP = CustomHiSP + 1;
lewiscameron 0:089b4c4f2b6f 455 wait(0.5);
lewiscameron 0:089b4c4f2b6f 456
lewiscameron 0:089b4c4f2b6f 457 }
lewiscameron 0:089b4c4f2b6f 458 }
lewiscameron 0:089b4c4f2b6f 459
lewiscameron 1:87661a0c8ba3 460 void CustLo_SP()
lewiscameron 0:089b4c4f2b6f 461 {
lewiscameron 0:089b4c4f2b6f 462 if (button_left_flag) {
lewiscameron 0:089b4c4f2b6f 463 button_left_flag = 0;
lewiscameron 3:eaa6fbb8fd87 464 pc.printf("Left pressed");
lewiscameron 3:eaa6fbb8fd87 465 CustomLoSP = CustomLoSP - 1;
lewiscameron 0:089b4c4f2b6f 466 wait(0.5);
lewiscameron 0:089b4c4f2b6f 467 }
lewiscameron 0:089b4c4f2b6f 468
lewiscameron 0:089b4c4f2b6f 469 if (button_right_flag) {
lewiscameron 0:089b4c4f2b6f 470 button_right_flag = 0;
lewiscameron 3:eaa6fbb8fd87 471 pc.printf("Right pressed");
lewiscameron 3:eaa6fbb8fd87 472 CustomLoSP = CustomLoSP + 1;
lewiscameron 0:089b4c4f2b6f 473 wait(0.5);
lewiscameron 0:089b4c4f2b6f 474 }
lewiscameron 0:089b4c4f2b6f 475
lewiscameron 3:eaa6fbb8fd87 476 }
lewiscameron 3:eaa6fbb8fd87 477
lewiscameron 3:eaa6fbb8fd87 478 void ShowSP()
lewiscameron 3:eaa6fbb8fd87 479 {
lewiscameron 3:eaa6fbb8fd87 480 char buffer[14];
lewiscameron 0:089b4c4f2b6f 481 int length = sprintf(buffer,"LoLimSP=%.2iC",CustomLoSP);
lewiscameron 0:089b4c4f2b6f 482
lewiscameron 0:089b4c4f2b6f 483 if (length <= 14); {
lewiscameron 3:eaa6fbb8fd87 484 lcd.printString(buffer,0,3);
lewiscameron 3:eaa6fbb8fd87 485 }
lewiscameron 3:eaa6fbb8fd87 486
lewiscameron 3:eaa6fbb8fd87 487 length = sprintf(buffer,"HiLimSP=%.2iC",CustomHiSP);
lewiscameron 3:eaa6fbb8fd87 488
lewiscameron 3:eaa6fbb8fd87 489 if (length <= 14); {
lewiscameron 3:eaa6fbb8fd87 490 lcd.printString(buffer,0,2);
lewiscameron 0:089b4c4f2b6f 491 }
lewiscameron 0:089b4c4f2b6f 492 }
lewiscameron 3:eaa6fbb8fd87 493
lewiscameron 2:9d6daa8a091c 494
lewiscameron 2:9d6daa8a091c 495 void TMP102::error()
lewiscameron 2:9d6daa8a091c 496 {
lewiscameron 2:9d6daa8a091c 497 //Run start screens
lewiscameron 2:9d6daa8a091c 498 startup();
lewiscameron 2:9d6daa8a091c 499 lcd.clear();
lewiscameron 2:9d6daa8a091c 500 lcd.printString("TMP102",0,0);
lewiscameron 2:9d6daa8a091c 501 lcd.printString("Sensor Error",0,1);
lewiscameron 2:9d6daa8a091c 502
lewiscameron 2:9d6daa8a091c 503
lewiscameron 2:9d6daa8a091c 504 // If there is an error than flash led
lewiscameron 2:9d6daa8a091c 505 while(1) {
lewiscameron 2:9d6daa8a091c 506 printf("Temp sensor error \n");
lewiscameron 2:9d6daa8a091c 507 led_red2 = 0;
lewiscameron 2:9d6daa8a091c 508 }
lewiscameron 2:9d6daa8a091c 509 }
lewiscameron 2:9d6daa8a091c 510
lewiscameron 0:089b4c4f2b6f 511
lewiscameron 0:089b4c4f2b6f 512
lewiscameron 0:089b4c4f2b6f 513
lewiscameron 1:87661a0c8ba3 514
lewiscameron 0:089b4c4f2b6f 515