legionella detector

Dependencies:   mbed

Committer:
lewiscameron
Date:
Tue Aug 23 09:55:54 2022 +0000
Revision:
2:9d6daa8a091c
Parent:
1:87661a0c8ba3
Child:
3:eaa6fbb8fd87
h

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 0:089b4c4f2b6f 84
lewiscameron 0:089b4c4f2b6f 85
lewiscameron 0:089b4c4f2b6f 86
lewiscameron 0:089b4c4f2b6f 87
lewiscameron 0:089b4c4f2b6f 88 int main() {
lewiscameron 0:089b4c4f2b6f 89
lewiscameron 0:089b4c4f2b6f 90 // interrupts setup
lewiscameron 1:87661a0c8ba3 91 button_a.rise(&button_a_isr);
lewiscameron 1:87661a0c8ba3 92 button_b.rise(&button_b_isr);
lewiscameron 1:87661a0c8ba3 93 button_x.rise(&button_x_isr);
lewiscameron 1:87661a0c8ba3 94 button_y.rise(&button_y_isr);
lewiscameron 1:87661a0c8ba3 95 button_left.rise(&button_left_isr);
lewiscameron 1:87661a0c8ba3 96 button_right.rise(&button_right_isr);
lewiscameron 1:87661a0c8ba3 97 button_back.rise(&button_back_isr);
lewiscameron 1:87661a0c8ba3 98 button_start.rise(&button_start_isr);
lewiscameron 0:089b4c4f2b6f 99
lewiscameron 0:089b4c4f2b6f 100
lewiscameron 0:089b4c4f2b6f 101
lewiscameron 0:089b4c4f2b6f 102 init_serial();
lewiscameron 0:089b4c4f2b6f 103 init_K64F();
lewiscameron 0:089b4c4f2b6f 104 init_pcb();
lewiscameron 0:089b4c4f2b6f 105 tmp.init();
lewiscameron 0:089b4c4f2b6f 106 lcd.init();
lewiscameron 0:089b4c4f2b6f 107 Joystick.init();
lewiscameron 0:089b4c4f2b6f 108
lewiscameron 0:089b4c4f2b6f 109 lcd.setContrast(0.5);
lewiscameron 0:089b4c4f2b6f 110 lcd.setBrightness(0.5);
lewiscameron 0:089b4c4f2b6f 111
lewiscameron 0:089b4c4f2b6f 112 startup();
lewiscameron 0:089b4c4f2b6f 113
lewiscameron 0:089b4c4f2b6f 114 codeloop();
lewiscameron 0:089b4c4f2b6f 115
lewiscameron 0:089b4c4f2b6f 116
lewiscameron 0:089b4c4f2b6f 117
lewiscameron 0:089b4c4f2b6f 118 }
lewiscameron 0:089b4c4f2b6f 119
lewiscameron 0:089b4c4f2b6f 120 // initialise serial connection
lewiscameron 0:089b4c4f2b6f 121 void init_serial()
lewiscameron 0:089b4c4f2b6f 122 {
lewiscameron 0:089b4c4f2b6f 123 pc.baud(9600);
lewiscameron 0:089b4c4f2b6f 124 }
lewiscameron 0:089b4c4f2b6f 125
lewiscameron 0:089b4c4f2b6f 126 void init_K64F()
lewiscameron 0:089b4c4f2b6f 127 {
lewiscameron 0:089b4c4f2b6f 128 boardled_red = 1;
lewiscameron 0:089b4c4f2b6f 129 boardled_green = 1;
lewiscameron 0:089b4c4f2b6f 130 boardled_blue = 1;
lewiscameron 0:089b4c4f2b6f 131
lewiscameron 0:089b4c4f2b6f 132 sw2.mode(PullNone);
lewiscameron 0:089b4c4f2b6f 133 sw3.mode(PullNone);
lewiscameron 0:089b4c4f2b6f 134 }
lewiscameron 0:089b4c4f2b6f 135
lewiscameron 0:089b4c4f2b6f 136 void init_pcb()
lewiscameron 0:089b4c4f2b6f 137 {
lewiscameron 0:089b4c4f2b6f 138
lewiscameron 0:089b4c4f2b6f 139 led_red1 = 1;
lewiscameron 0:089b4c4f2b6f 140 led_red2 = 1;
lewiscameron 0:089b4c4f2b6f 141 led_red3 = 1;
lewiscameron 0:089b4c4f2b6f 142 led_green1 = 1;
lewiscameron 0:089b4c4f2b6f 143 led_green2 = 1;
lewiscameron 0:089b4c4f2b6f 144 led_green3 = 1;
lewiscameron 0:089b4c4f2b6f 145 // active low LED's so off when = 1
lewiscameron 0:089b4c4f2b6f 146
lewiscameron 0:089b4c4f2b6f 147 // sets up the PCB Buttons
lewiscameron 0:089b4c4f2b6f 148 button_a.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 149 button_b.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 150 button_x.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 151 button_y.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 152 button_left.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 153 button_right.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 154 button_start.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 155 button_back.mode(PullDown);
lewiscameron 0:089b4c4f2b6f 156 }
lewiscameron 0:089b4c4f2b6f 157
lewiscameron 0:089b4c4f2b6f 158 void startup()
lewiscameron 0:089b4c4f2b6f 159 {
lewiscameron 0:089b4c4f2b6f 160 lcd.printString("Lewis Cameron",0,0);
lewiscameron 0:089b4c4f2b6f 161 lcd.printString("18689002",0,1);
lewiscameron 0:089b4c4f2b6f 162 pc.printf("startup");
lewiscameron 0:089b4c4f2b6f 163 lcd.refresh();
lewiscameron 0:089b4c4f2b6f 164 wait(5);
lewiscameron 0:089b4c4f2b6f 165 }
lewiscameron 0:089b4c4f2b6f 166
lewiscameron 0:089b4c4f2b6f 167 void codeloop()
lewiscameron 0:089b4c4f2b6f 168 {
lewiscameron 0:089b4c4f2b6f 169 int page;
lewiscameron 0:089b4c4f2b6f 170
lewiscameron 0:089b4c4f2b6f 171 while(1){
lewiscameron 0:089b4c4f2b6f 172 lcd.clear();
lewiscameron 0:089b4c4f2b6f 173
lewiscameron 0:089b4c4f2b6f 174 switch(page){
lewiscameron 0:089b4c4f2b6f 175
lewiscameron 0:089b4c4f2b6f 176 case 1:
lewiscameron 0:089b4c4f2b6f 177 {
lewiscameron 0:089b4c4f2b6f 178
lewiscameron 0:089b4c4f2b6f 179 init_pcb();
lewiscameron 0:089b4c4f2b6f 180
lewiscameron 0:089b4c4f2b6f 181 float temp = tmp.get_temperature();
lewiscameron 0:089b4c4f2b6f 182
lewiscameron 0:089b4c4f2b6f 183
lewiscameron 0:089b4c4f2b6f 184 lcd.clear();
lewiscameron 0:089b4c4f2b6f 185 lcd.printString("CWS",20,0);
lewiscameron 0:089b4c4f2b6f 186 lcd.printString("Temp is",0,2);
lewiscameron 0:089b4c4f2b6f 187 get_temp();
lewiscameron 0:089b4c4f2b6f 188 lcd.printString("Press Back To Go Home",0,5);
lewiscameron 0:089b4c4f2b6f 189
lewiscameron 0:089b4c4f2b6f 190 if (temp >= CwsHiSP){
lewiscameron 0:089b4c4f2b6f 191 lcd.printString("Water Temp Too High",0,3);
lewiscameron 0:089b4c4f2b6f 192 lcd.printString("Legionella Warning",0,4);
lewiscameron 0:089b4c4f2b6f 193 led_red1 = 0;
lewiscameron 0:089b4c4f2b6f 194 }
lewiscameron 0:089b4c4f2b6f 195
lewiscameron 0:089b4c4f2b6f 196 else if (temp < CwsHiSP){
lewiscameron 0:089b4c4f2b6f 197 lcd.printString("Water Temp OK",0,3);
lewiscameron 0:089b4c4f2b6f 198 lcd.printString("No Danger Of Legionella",0,4);
lewiscameron 0:089b4c4f2b6f 199 led_red1 = 1;
lewiscameron 0:089b4c4f2b6f 200 }
lewiscameron 0:089b4c4f2b6f 201
lewiscameron 0:089b4c4f2b6f 202 if (button_back_flag) {
lewiscameron 0:089b4c4f2b6f 203 button_back_flag = 0;
lewiscameron 0:089b4c4f2b6f 204 page = 0;
lewiscameron 0:089b4c4f2b6f 205 }
lewiscameron 0:089b4c4f2b6f 206
lewiscameron 0:089b4c4f2b6f 207 }
lewiscameron 0:089b4c4f2b6f 208 break;
lewiscameron 0:089b4c4f2b6f 209
lewiscameron 0:089b4c4f2b6f 210 case 2:
lewiscameron 0:089b4c4f2b6f 211 {
lewiscameron 0:089b4c4f2b6f 212
lewiscameron 0:089b4c4f2b6f 213 init_pcb();
lewiscameron 0:089b4c4f2b6f 214 float temp = tmp.get_temperature();
lewiscameron 0:089b4c4f2b6f 215
lewiscameron 0:089b4c4f2b6f 216 lcd.clear();
lewiscameron 0:089b4c4f2b6f 217 lcd.printString("HWS",20,0);
lewiscameron 0:089b4c4f2b6f 218 lcd.printString("Temp is",0,2);
lewiscameron 0:089b4c4f2b6f 219 get_temp();
lewiscameron 0:089b4c4f2b6f 220 lcd.printString("Press Back To Go Home",0,5);
lewiscameron 0:089b4c4f2b6f 221
lewiscameron 0:089b4c4f2b6f 222 if (HwsLoLimSP < temp < HwsKaSP){
lewiscameron 0:089b4c4f2b6f 223 lcd.printString("Temperature Raised",0,3);
lewiscameron 0:089b4c4f2b6f 224 lcd.printString("Killing Legionella",0,4);
lewiscameron 0:089b4c4f2b6f 225 led_green1 = 0;
lewiscameron 0:089b4c4f2b6f 226 }
lewiscameron 0:089b4c4f2b6f 227
lewiscameron 0:089b4c4f2b6f 228 else if (temp >= HwsKaSP){
lewiscameron 0:089b4c4f2b6f 229 lcd.printString("Temperature Raised",0,3);
lewiscameron 0:089b4c4f2b6f 230 lcd.printString("All Legionella Killed",0,4);
lewiscameron 0:089b4c4f2b6f 231 led_green1 = 0;
lewiscameron 0:089b4c4f2b6f 232 led_green2 = 0;
lewiscameron 0:089b4c4f2b6f 233 }
lewiscameron 0:089b4c4f2b6f 234
lewiscameron 0:089b4c4f2b6f 235 else if (temp < HwsLoLimSP){
lewiscameron 0:089b4c4f2b6f 236 lcd.printString("Temperature Low",0,3);
lewiscameron 0:089b4c4f2b6f 237 lcd.printString("Legionella Warning",0,4);
lewiscameron 0:089b4c4f2b6f 238 led_red1 = 0;
lewiscameron 0:089b4c4f2b6f 239 }
lewiscameron 0:089b4c4f2b6f 240
lewiscameron 0:089b4c4f2b6f 241 if (button_back_flag) {
lewiscameron 0:089b4c4f2b6f 242 button_back_flag = 0;
lewiscameron 0:089b4c4f2b6f 243 page = 0;
lewiscameron 0:089b4c4f2b6f 244 }
lewiscameron 0:089b4c4f2b6f 245
lewiscameron 0:089b4c4f2b6f 246 }
lewiscameron 0:089b4c4f2b6f 247
lewiscameron 0:089b4c4f2b6f 248
lewiscameron 0:089b4c4f2b6f 249
lewiscameron 0:089b4c4f2b6f 250 break;
lewiscameron 0:089b4c4f2b6f 251
lewiscameron 0:089b4c4f2b6f 252 case 3:
lewiscameron 0:089b4c4f2b6f 253 {
lewiscameron 0:089b4c4f2b6f 254
lewiscameron 0:089b4c4f2b6f 255 init_pcb();
lewiscameron 0:089b4c4f2b6f 256 lcd.clear();
lewiscameron 0:089b4c4f2b6f 257
lewiscameron 0:089b4c4f2b6f 258 lcd.printString("Custom SP",20,0);
lewiscameron 0:089b4c4f2b6f 259 lcd.printString("Temp is",0,2);
lewiscameron 0:089b4c4f2b6f 260 get_temp();
lewiscameron 0:089b4c4f2b6f 261 CustHi_SP();
lewiscameron 0:089b4c4f2b6f 262 CustLo_SP();
lewiscameron 0:089b4c4f2b6f 263 lcd.printString("Press Back To Go Home",0,5);
lewiscameron 0:089b4c4f2b6f 264
lewiscameron 0:089b4c4f2b6f 265 if (button_back_flag) {
lewiscameron 0:089b4c4f2b6f 266 button_back_flag = 0;
lewiscameron 0:089b4c4f2b6f 267 page = 0;
lewiscameron 0:089b4c4f2b6f 268 }
lewiscameron 0:089b4c4f2b6f 269
lewiscameron 0:089b4c4f2b6f 270 }
lewiscameron 0:089b4c4f2b6f 271
lewiscameron 0:089b4c4f2b6f 272 break;
lewiscameron 0:089b4c4f2b6f 273
lewiscameron 0:089b4c4f2b6f 274 case 4:
lewiscameron 0:089b4c4f2b6f 275 {
lewiscameron 0:089b4c4f2b6f 276 init_pcb();
lewiscameron 0:089b4c4f2b6f 277 lcd.clear();
lewiscameron 0:089b4c4f2b6f 278 lcd.printString("Info",20,0);
lewiscameron 0:089b4c4f2b6f 279 lcd.printString("Legionella Detector",0,1);
lewiscameron 0:089b4c4f2b6f 280 lcd.printString("Lewis Cameron",0,2);
lewiscameron 0:089b4c4f2b6f 281 lcd.printString("18689002",0,3);
lewiscameron 0:089b4c4f2b6f 282 lcd.printString("Press Back To Go Home",0,4);
lewiscameron 0:089b4c4f2b6f 283
lewiscameron 0:089b4c4f2b6f 284 if (button_back_flag) {
lewiscameron 0:089b4c4f2b6f 285 button_back_flag = 0;
lewiscameron 0:089b4c4f2b6f 286 page = 0;
lewiscameron 0:089b4c4f2b6f 287 }
lewiscameron 0:089b4c4f2b6f 288
lewiscameron 0:089b4c4f2b6f 289 }
lewiscameron 0:089b4c4f2b6f 290
lewiscameron 0:089b4c4f2b6f 291
lewiscameron 0:089b4c4f2b6f 292
lewiscameron 0:089b4c4f2b6f 293 break;
lewiscameron 0:089b4c4f2b6f 294 {
lewiscameron 0:089b4c4f2b6f 295 default:
lewiscameron 0:089b4c4f2b6f 296 init_pcb();
lewiscameron 0:089b4c4f2b6f 297 lcd.clear();
lewiscameron 0:089b4c4f2b6f 298
lewiscameron 0:089b4c4f2b6f 299 lcd.printString("Main Menu",0,0);
lewiscameron 0:089b4c4f2b6f 300 lcd.printString("A = Cold Water",0,1);
lewiscameron 0:089b4c4f2b6f 301 lcd.printString("B = Hot Water",0,2);
lewiscameron 0:089b4c4f2b6f 302 lcd.printString("X = Custom SP",0,3);
lewiscameron 0:089b4c4f2b6f 303 lcd.printString("Y = Info",0,4);
lewiscameron 0:089b4c4f2b6f 304 lcd.refresh();
lewiscameron 0:089b4c4f2b6f 305
lewiscameron 0:089b4c4f2b6f 306 if (button_a_flag) {
lewiscameron 0:089b4c4f2b6f 307 button_a_flag = 0;
lewiscameron 0:089b4c4f2b6f 308 page = 1;
lewiscameron 0:089b4c4f2b6f 309 }
lewiscameron 0:089b4c4f2b6f 310
lewiscameron 0:089b4c4f2b6f 311 if (button_b_flag) {
lewiscameron 0:089b4c4f2b6f 312 button_b_flag = 0;
lewiscameron 0:089b4c4f2b6f 313 page = 2;
lewiscameron 0:089b4c4f2b6f 314 }
lewiscameron 0:089b4c4f2b6f 315
lewiscameron 0:089b4c4f2b6f 316 if (button_x_flag) {
lewiscameron 0:089b4c4f2b6f 317 button_x_flag = 0;
lewiscameron 0:089b4c4f2b6f 318 page = 3;
lewiscameron 0:089b4c4f2b6f 319 }
lewiscameron 0:089b4c4f2b6f 320
lewiscameron 0:089b4c4f2b6f 321 if (button_y_flag) {
lewiscameron 0:089b4c4f2b6f 322 button_y_flag = 0;
lewiscameron 0:089b4c4f2b6f 323 page = 4;
lewiscameron 0:089b4c4f2b6f 324 }
lewiscameron 0:089b4c4f2b6f 325
lewiscameron 0:089b4c4f2b6f 326 }
lewiscameron 0:089b4c4f2b6f 327 }
lewiscameron 1:87661a0c8ba3 328
lewiscameron 0:089b4c4f2b6f 329 }
lewiscameron 1:87661a0c8ba3 330 }
lewiscameron 1:87661a0c8ba3 331
lewiscameron 1:87661a0c8ba3 332
lewiscameron 0:089b4c4f2b6f 333
lewiscameron 1:87661a0c8ba3 334 void button_a_isr()
lewiscameron 0:089b4c4f2b6f 335 {
lewiscameron 0:089b4c4f2b6f 336 button_a_flag = 1;
lewiscameron 0:089b4c4f2b6f 337 }
lewiscameron 0:089b4c4f2b6f 338
lewiscameron 1:87661a0c8ba3 339 void button_b_isr()
lewiscameron 0:089b4c4f2b6f 340 {
lewiscameron 0:089b4c4f2b6f 341 button_b_flag = 1;
lewiscameron 0:089b4c4f2b6f 342 }
lewiscameron 0:089b4c4f2b6f 343
lewiscameron 1:87661a0c8ba3 344 void button_x_isr()
lewiscameron 0:089b4c4f2b6f 345 {
lewiscameron 0:089b4c4f2b6f 346 button_x_flag = 1;
lewiscameron 0:089b4c4f2b6f 347 }
lewiscameron 0:089b4c4f2b6f 348
lewiscameron 1:87661a0c8ba3 349 void button_y_isr()
lewiscameron 0:089b4c4f2b6f 350 {
lewiscameron 0:089b4c4f2b6f 351 button_y_flag = 1;
lewiscameron 0:089b4c4f2b6f 352 }
lewiscameron 0:089b4c4f2b6f 353
lewiscameron 1:87661a0c8ba3 354 void button_left_isr()
lewiscameron 0:089b4c4f2b6f 355 {
lewiscameron 0:089b4c4f2b6f 356 button_left_flag = 1;
lewiscameron 0:089b4c4f2b6f 357 }
lewiscameron 0:089b4c4f2b6f 358
lewiscameron 1:87661a0c8ba3 359 void button_right_isr()
lewiscameron 0:089b4c4f2b6f 360 {
lewiscameron 0:089b4c4f2b6f 361 button_right_flag = 1;
lewiscameron 0:089b4c4f2b6f 362 }
lewiscameron 0:089b4c4f2b6f 363
lewiscameron 1:87661a0c8ba3 364 void button_back_isr()
lewiscameron 0:089b4c4f2b6f 365 {
lewiscameron 0:089b4c4f2b6f 366 button_back_flag = 1;
lewiscameron 0:089b4c4f2b6f 367 }
lewiscameron 0:089b4c4f2b6f 368
lewiscameron 0:089b4c4f2b6f 369
lewiscameron 1:87661a0c8ba3 370 void button_start_isr()
lewiscameron 0:089b4c4f2b6f 371 {
lewiscameron 0:089b4c4f2b6f 372 button_start_flag = 1;
lewiscameron 0:089b4c4f2b6f 373 }
lewiscameron 0:089b4c4f2b6f 374
lewiscameron 1:87661a0c8ba3 375 void cwshigh()
lewiscameron 0:089b4c4f2b6f 376 {
lewiscameron 0:089b4c4f2b6f 377 lcd.printString("Water Temp Too High",0,3);
lewiscameron 0:089b4c4f2b6f 378 led_red1 = 0;
lewiscameron 0:089b4c4f2b6f 379 }
lewiscameron 0:089b4c4f2b6f 380
lewiscameron 1:87661a0c8ba3 381 void get_temp()
lewiscameron 0:089b4c4f2b6f 382 {
lewiscameron 0:089b4c4f2b6f 383 char buffer[14];
lewiscameron 0:089b4c4f2b6f 384 float temp = tmp.get_temperature();
lewiscameron 0:089b4c4f2b6f 385 int length = sprintf(buffer,"%.2f C",temp);
lewiscameron 0:089b4c4f2b6f 386 //pc.printf("temp = %f K\n",temp);
lewiscameron 0:089b4c4f2b6f 387 if (length <=14)
lewiscameron 0:089b4c4f2b6f 388 lcd.printString(buffer,20,2);
lewiscameron 0:089b4c4f2b6f 389
lewiscameron 0:089b4c4f2b6f 390 }
lewiscameron 0:089b4c4f2b6f 391
lewiscameron 1:87661a0c8ba3 392 void CustHi_SP()
lewiscameron 0:089b4c4f2b6f 393 {
lewiscameron 0:089b4c4f2b6f 394 Direction d = Joystick.get_direction();
lewiscameron 0:089b4c4f2b6f 395
lewiscameron 0:089b4c4f2b6f 396
lewiscameron 0:089b4c4f2b6f 397 if (d = W) {
lewiscameron 0:089b4c4f2b6f 398 CustomHiSPChange = CustomHiSP - 1;
lewiscameron 0:089b4c4f2b6f 399 wait(0.5);
lewiscameron 0:089b4c4f2b6f 400 CustomHiSPChange = CustomHiSP;
lewiscameron 0:089b4c4f2b6f 401 }
lewiscameron 0:089b4c4f2b6f 402
lewiscameron 0:089b4c4f2b6f 403 if (d = E) {
lewiscameron 0:089b4c4f2b6f 404 CustomHiSPChange = CustomHiSP + 1;
lewiscameron 0:089b4c4f2b6f 405 wait(0.5);
lewiscameron 0:089b4c4f2b6f 406 CustomHiSPChange = CustomHiSP;
lewiscameron 0:089b4c4f2b6f 407
lewiscameron 0:089b4c4f2b6f 408 char buffer[14];
lewiscameron 0:089b4c4f2b6f 409 int length = sprintf(buffer,"HiLimSP=%.2iC",CustomHiSP);
lewiscameron 0:089b4c4f2b6f 410
lewiscameron 0:089b4c4f2b6f 411 if (length <= 14); {
lewiscameron 0:089b4c4f2b6f 412 lcd.printString(buffer,0,3);
lewiscameron 0:089b4c4f2b6f 413 }
lewiscameron 0:089b4c4f2b6f 414 }
lewiscameron 0:089b4c4f2b6f 415 }
lewiscameron 0:089b4c4f2b6f 416
lewiscameron 1:87661a0c8ba3 417 void CustLo_SP()
lewiscameron 0:089b4c4f2b6f 418 {
lewiscameron 0:089b4c4f2b6f 419 if (button_left_flag) {
lewiscameron 0:089b4c4f2b6f 420 button_left_flag = 0;
lewiscameron 0:089b4c4f2b6f 421 CustomLoSPChange = CustomLoSP - 1;
lewiscameron 0:089b4c4f2b6f 422 wait(0.5);
lewiscameron 0:089b4c4f2b6f 423 CustomLoSPChange = CustomLoSP;
lewiscameron 0:089b4c4f2b6f 424 }
lewiscameron 0:089b4c4f2b6f 425
lewiscameron 0:089b4c4f2b6f 426 if (button_right_flag) {
lewiscameron 0:089b4c4f2b6f 427 button_right_flag = 0;
lewiscameron 0:089b4c4f2b6f 428 CustomLoSPChange = CustomLoSP + 1;
lewiscameron 0:089b4c4f2b6f 429 wait(0.5);
lewiscameron 0:089b4c4f2b6f 430 CustomLoSPChange = CustomLoSP;
lewiscameron 0:089b4c4f2b6f 431 }
lewiscameron 0:089b4c4f2b6f 432
lewiscameron 0:089b4c4f2b6f 433 char buffer[14];
lewiscameron 0:089b4c4f2b6f 434 int length = sprintf(buffer,"LoLimSP=%.2iC",CustomLoSP);
lewiscameron 0:089b4c4f2b6f 435
lewiscameron 0:089b4c4f2b6f 436 if (length <= 14); {
lewiscameron 0:089b4c4f2b6f 437 lcd.printString(buffer,0,4);
lewiscameron 0:089b4c4f2b6f 438 }
lewiscameron 0:089b4c4f2b6f 439 }
lewiscameron 2:9d6daa8a091c 440
lewiscameron 2:9d6daa8a091c 441 void TMP102::error()
lewiscameron 2:9d6daa8a091c 442 {
lewiscameron 2:9d6daa8a091c 443 //Run start screens
lewiscameron 2:9d6daa8a091c 444 startup();
lewiscameron 2:9d6daa8a091c 445 lcd.clear();
lewiscameron 2:9d6daa8a091c 446 lcd.printString("TMP102",0,0);
lewiscameron 2:9d6daa8a091c 447 lcd.printString("Sensor Error",0,1);
lewiscameron 2:9d6daa8a091c 448
lewiscameron 2:9d6daa8a091c 449
lewiscameron 2:9d6daa8a091c 450 // If there is an error than flash led
lewiscameron 2:9d6daa8a091c 451 while(1) {
lewiscameron 2:9d6daa8a091c 452 printf("Temp sensor error \n");
lewiscameron 2:9d6daa8a091c 453 led_red2 = 0;
lewiscameron 2:9d6daa8a091c 454 }
lewiscameron 2:9d6daa8a091c 455 }
lewiscameron 2:9d6daa8a091c 456
lewiscameron 0:089b4c4f2b6f 457
lewiscameron 0:089b4c4f2b6f 458
lewiscameron 0:089b4c4f2b6f 459
lewiscameron 1:87661a0c8ba3 460
lewiscameron 0:089b4c4f2b6f 461