Working version with debug and simulate mode

Dependencies:   mbed Grove_LCD_RGB_Backlight DebounceIn

Committer:
bmcclure
Date:
Thu Sep 19 22:35:30 2019 +0000
Revision:
1:6d456a72fe63
Parent:
0:2f5d939d4a4a
Working version with debug mode and simulate mode.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dattranvnfrr 0:2f5d939d4a4a 1 #include "Grove_LCD_RGB_Backlight.h"
dattranvnfrr 0:2f5d939d4a4a 2 #include "mbed.h"
dattranvnfrr 0:2f5d939d4a4a 3 #include "DebounceIn.h"
dattranvnfrr 0:2f5d939d4a4a 4
bmcclure 1:6d456a72fe63 5
bmcclure 1:6d456a72fe63 6 #define OUT_OFF (0)
bmcclure 1:6d456a72fe63 7 #define OUT_ON (1)
bmcclure 1:6d456a72fe63 8
bmcclure 1:6d456a72fe63 9 #define IN_OFF (1)
bmcclure 1:6d456a72fe63 10 #define IN_ON (0)
dattranvnfrr 0:2f5d939d4a4a 11
bmcclure 1:6d456a72fe63 12
bmcclure 1:6d456a72fe63 13 //input
bmcclure 1:6d456a72fe63 14 DebounceIn doorClosed(p5); //Check door status
dattranvnfrr 0:2f5d939d4a4a 15 DebounceIn cycleStartBtt(p14); //cycle start button
bmcclure 1:6d456a72fe63 16 DebounceIn stopBtt(p15); //stop button
bmcclure 1:6d456a72fe63 17 //InterruptIn stopBtt(p15); //stop button
dattranvnfrr 0:2f5d939d4a4a 18 //DigitalIn pot(p20);
dattranvnfrr 0:2f5d939d4a4a 19
dattranvnfrr 0:2f5d939d4a4a 20 //output
dattranvnfrr 0:2f5d939d4a4a 21 DigitalOut doorInterlock(p6); //Door interlock
dattranvnfrr 0:2f5d939d4a4a 22 DigitalOut fanRelay(p7); //Fan control
dattranvnfrr 0:2f5d939d4a4a 23 DigitalOut redRelay(p8); //Red light
dattranvnfrr 0:2f5d939d4a4a 24 DigitalOut yellowRelay(p11); //Yellow light
dattranvnfrr 0:2f5d939d4a4a 25 DigitalOut greenRelay(p12); //Green light
dattranvnfrr 0:2f5d939d4a4a 26 DigitalOut damperRelay(p13); //Damper solenoid control
dattranvnfrr 0:2f5d939d4a4a 27 DigitalOut damperRelayAlt(p16); //Damper solenoid toggle control
dattranvnfrr 0:2f5d939d4a4a 28 DigitalOut vfd(p17); //VFD Start relay
dattranvnfrr 0:2f5d939d4a4a 29
dattranvnfrr 0:2f5d939d4a4a 30 Grove_LCD_RGB_Backlight rgbLCD(p9, p10); //Timer display
dattranvnfrr 0:2f5d939d4a4a 31
bmcclure 1:6d456a72fe63 32 bool cancelPending = false;
bmcclure 1:6d456a72fe63 33 bool damperIsOpen;
bmcclure 1:6d456a72fe63 34 bool simulateMode = false;
dattranvnfrr 0:2f5d939d4a4a 35
dattranvnfrr 0:2f5d939d4a4a 36 I2C i2c(p9, p10);
dattranvnfrr 0:2f5d939d4a4a 37 //Serial pc(USBTX, USBRX);
dattranvnfrr 0:2f5d939d4a4a 38
bmcclure 1:6d456a72fe63 39
dattranvnfrr 0:2f5d939d4a4a 40 //extern "C" void mbed_reset();
dattranvnfrr 0:2f5d939d4a4a 41
bmcclure 1:6d456a72fe63 42 // Function declarations
bmcclure 1:6d456a72fe63 43 void damperRotate(int damper);
bmcclure 1:6d456a72fe63 44 void fullLineItoA(int m, char* str);
bmcclure 1:6d456a72fe63 45 void countDown(int s); //countdown in sec
bmcclure 1:6d456a72fe63 46 void fullStop();
bmcclure 1:6d456a72fe63 47 void debugMode();
bmcclure 1:6d456a72fe63 48
bmcclure 1:6d456a72fe63 49
bmcclure 1:6d456a72fe63 50
bmcclure 1:6d456a72fe63 51 int main()
bmcclure 1:6d456a72fe63 52 {
bmcclure 1:6d456a72fe63 53 //on power up status
bmcclure 1:6d456a72fe63 54 cycleStartBtt.mode(PullUp);
bmcclure 1:6d456a72fe63 55 cycleStartBtt.set_debounce_us(1000);
bmcclure 1:6d456a72fe63 56 cycleStartBtt.set_samples(100);
bmcclure 1:6d456a72fe63 57 wait(.1);
bmcclure 1:6d456a72fe63 58
bmcclure 1:6d456a72fe63 59 doorClosed.mode(PullUp);
bmcclure 1:6d456a72fe63 60 cycleStartBtt.set_debounce_us(1000);
bmcclure 1:6d456a72fe63 61 cycleStartBtt.set_samples(100);
bmcclure 1:6d456a72fe63 62 wait(.1);
bmcclure 1:6d456a72fe63 63
bmcclure 1:6d456a72fe63 64 stopBtt.mode(PullUp);
bmcclure 1:6d456a72fe63 65 cycleStartBtt.set_debounce_us(1000);
bmcclure 1:6d456a72fe63 66 cycleStartBtt.set_samples(100);
bmcclure 1:6d456a72fe63 67 wait(.5);
bmcclure 1:6d456a72fe63 68
bmcclure 1:6d456a72fe63 69 rgbLCD.clear();
bmcclure 1:6d456a72fe63 70 rgbLCD.setRGB(0x00, 0x66, 0xaa); //set the color
bmcclure 1:6d456a72fe63 71 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 72
bmcclure 1:6d456a72fe63 73 if(cycleStartBtt == IN_ON && stopBtt == IN_ON)
bmcclure 1:6d456a72fe63 74 {
bmcclure 1:6d456a72fe63 75 simulateMode = true;
bmcclure 1:6d456a72fe63 76 rgbLCD.print("Simulating.... ");
bmcclure 1:6d456a72fe63 77 wait(5);
bmcclure 1:6d456a72fe63 78 }
bmcclure 1:6d456a72fe63 79 if(stopBtt == IN_ON)
bmcclure 1:6d456a72fe63 80 {
bmcclure 1:6d456a72fe63 81 debugMode();
bmcclure 1:6d456a72fe63 82 }
bmcclure 1:6d456a72fe63 83
bmcclure 1:6d456a72fe63 84 //check for closed door before running fan
bmcclure 1:6d456a72fe63 85 while(doorClosed!=IN_ON)
bmcclure 1:6d456a72fe63 86 {
bmcclure 1:6d456a72fe63 87 rgbLCD.clear();
bmcclure 1:6d456a72fe63 88 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 89 rgbLCD.print("Close the door ");
bmcclure 1:6d456a72fe63 90 wait(.25);
bmcclure 1:6d456a72fe63 91 }
bmcclure 1:6d456a72fe63 92
bmcclure 1:6d456a72fe63 93 //Display startup countdown
bmcclure 1:6d456a72fe63 94 //Startin up and prep the tank
bmcclure 1:6d456a72fe63 95 rgbLCD.clear();
bmcclure 1:6d456a72fe63 96 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 97 rgbLCD.print("Starting up... ");
bmcclure 1:6d456a72fe63 98
bmcclure 1:6d456a72fe63 99 vfd = OUT_OFF;
bmcclure 1:6d456a72fe63 100 damperIsOpen = false; // Assert and run the opener once
bmcclure 1:6d456a72fe63 101 damperRotate(1); //vent opened;
bmcclure 1:6d456a72fe63 102 if(!simulateMode)
bmcclure 1:6d456a72fe63 103 {
bmcclure 1:6d456a72fe63 104 doorInterlock = OUT_ON;
bmcclure 1:6d456a72fe63 105 fanRelay = OUT_ON;
bmcclure 1:6d456a72fe63 106 }
bmcclure 1:6d456a72fe63 107 greenRelay = OUT_OFF;
bmcclure 1:6d456a72fe63 108 yellowRelay = OUT_OFF;
bmcclure 1:6d456a72fe63 109 redRelay = OUT_OFF;
bmcclure 1:6d456a72fe63 110
bmcclure 1:6d456a72fe63 111 //start timer for 90sec
bmcclure 1:6d456a72fe63 112 countDown(90);
bmcclure 1:6d456a72fe63 113
bmcclure 1:6d456a72fe63 114 //Tank is ready
bmcclure 1:6d456a72fe63 115 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 116 rgbLCD.print("Tank is ready! ");
bmcclure 1:6d456a72fe63 117 greenRelay = OUT_ON; //green light on
bmcclure 1:6d456a72fe63 118 doorInterlock = OUT_OFF; //interlock unlatched, ready to load material into the tank
bmcclure 1:6d456a72fe63 119 fanRelay = OUT_OFF; //fan off
bmcclure 1:6d456a72fe63 120
bmcclure 1:6d456a72fe63 121 cancelPending = false;
bmcclure 1:6d456a72fe63 122
bmcclure 1:6d456a72fe63 123 while(1)
bmcclure 1:6d456a72fe63 124 {
bmcclure 1:6d456a72fe63 125 if(cancelPending)
bmcclure 1:6d456a72fe63 126 {
bmcclure 1:6d456a72fe63 127 cancelPending = false;
bmcclure 1:6d456a72fe63 128
bmcclure 1:6d456a72fe63 129 //Display status
bmcclure 1:6d456a72fe63 130 greenRelay = OUT_OFF; //green light OFF
bmcclure 1:6d456a72fe63 131 yellowRelay = OUT_OFF; //yellow light OFF
bmcclure 1:6d456a72fe63 132 redRelay = OUT_ON; //turn red light ON
bmcclure 1:6d456a72fe63 133 rgbLCD.clear();
bmcclure 1:6d456a72fe63 134 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 135 rgbLCD.print("CYCLE STOPPED. ");
bmcclure 1:6d456a72fe63 136 vfd = OUT_OFF; //pump off
bmcclure 1:6d456a72fe63 137 if(doorClosed == IN_ON && !simulateMode)
bmcclure 1:6d456a72fe63 138 {
bmcclure 1:6d456a72fe63 139 doorInterlock = OUT_ON; //door latched
bmcclure 1:6d456a72fe63 140 }
bmcclure 1:6d456a72fe63 141 fanRelay = OUT_OFF; //fan stops
bmcclure 1:6d456a72fe63 142 damperRotate(0); //damper closed
bmcclure 1:6d456a72fe63 143
bmcclure 1:6d456a72fe63 144 //wait 60sec
bmcclure 1:6d456a72fe63 145 countDown(60);
bmcclure 1:6d456a72fe63 146 doorInterlock=OUT_OFF; //door unlatched
bmcclure 1:6d456a72fe63 147 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 148 rgbLCD.print("Tank is ready! ");
bmcclure 1:6d456a72fe63 149 }
bmcclure 1:6d456a72fe63 150
bmcclure 1:6d456a72fe63 151 if(doorClosed==IN_ON) //door closed
bmcclure 1:6d456a72fe63 152 {
bmcclure 1:6d456a72fe63 153 /*
bmcclure 1:6d456a72fe63 154 * Get set up for the wash, and wait for the start button
bmcclure 1:6d456a72fe63 155 */
bmcclure 1:6d456a72fe63 156 rgbLCD.locate(0,1);
bmcclure 1:6d456a72fe63 157 rgbLCD.print("Door closed ");
bmcclure 1:6d456a72fe63 158 greenRelay = OUT_ON; //green light stays on
bmcclure 1:6d456a72fe63 159 yellowRelay = OUT_OFF; //yellow light off
bmcclure 1:6d456a72fe63 160 redRelay = OUT_OFF; //red light off
bmcclure 1:6d456a72fe63 161 doorInterlock = OUT_OFF; //door unlocked
bmcclure 1:6d456a72fe63 162 fanRelay = OUT_OFF;
bmcclure 1:6d456a72fe63 163 while(cycleStartBtt != IN_ON && !(doorClosed == IN_OFF || cancelPending))
bmcclure 1:6d456a72fe63 164 {
bmcclure 1:6d456a72fe63 165 if(stopBtt == IN_ON)
bmcclure 1:6d456a72fe63 166 {
bmcclure 1:6d456a72fe63 167 cancelPending = true;
bmcclure 1:6d456a72fe63 168 continue;
bmcclure 1:6d456a72fe63 169 }
bmcclure 1:6d456a72fe63 170 wait(.25);
bmcclure 1:6d456a72fe63 171 }
bmcclure 1:6d456a72fe63 172 if(doorClosed == IN_OFF || cancelPending)
bmcclure 1:6d456a72fe63 173 {
bmcclure 1:6d456a72fe63 174 continue;
bmcclure 1:6d456a72fe63 175 }
bmcclure 1:6d456a72fe63 176
bmcclure 1:6d456a72fe63 177
bmcclure 1:6d456a72fe63 178 /*
bmcclure 1:6d456a72fe63 179 * Cycle start button pressed - wash for 2 minutes
bmcclure 1:6d456a72fe63 180 */
bmcclure 1:6d456a72fe63 181 rgbLCD.clear();
bmcclure 1:6d456a72fe63 182 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 183 rgbLCD.print("CYCLE STARTED! ");
bmcclure 1:6d456a72fe63 184 greenRelay = OUT_OFF; //green light off
bmcclure 1:6d456a72fe63 185 yellowRelay = OUT_ON; //yellow light on
bmcclure 1:6d456a72fe63 186 damperRotate(0); //vent close
bmcclure 1:6d456a72fe63 187 fanRelay = OUT_OFF; //fan stop
bmcclure 1:6d456a72fe63 188 if(!simulateMode)
bmcclure 1:6d456a72fe63 189 {
bmcclure 1:6d456a72fe63 190 doorInterlock = OUT_ON; //door locked
bmcclure 1:6d456a72fe63 191 vfd = OUT_ON; //vfd for pump up to speed
bmcclure 1:6d456a72fe63 192 }
bmcclure 1:6d456a72fe63 193 countDown(120); //start timer for 2min
bmcclure 1:6d456a72fe63 194 if(doorClosed == IN_OFF || cancelPending)
bmcclure 1:6d456a72fe63 195 {
bmcclure 1:6d456a72fe63 196 continue;
bmcclure 1:6d456a72fe63 197 }
bmcclure 1:6d456a72fe63 198
bmcclure 1:6d456a72fe63 199
bmcclure 1:6d456a72fe63 200 /*
bmcclure 1:6d456a72fe63 201 * Finished washing - turn off the pump
bmcclure 1:6d456a72fe63 202 */
bmcclure 1:6d456a72fe63 203 vfd = OUT_OFF; //pump off
bmcclure 1:6d456a72fe63 204 rgbLCD.clear();
bmcclure 1:6d456a72fe63 205 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 206 rgbLCD.print("CYCLE FINISHED! ");
bmcclure 1:6d456a72fe63 207 wait(1);
bmcclure 1:6d456a72fe63 208 if(doorClosed == IN_OFF || cancelPending)
bmcclure 1:6d456a72fe63 209 {
bmcclure 1:6d456a72fe63 210 continue;
bmcclure 1:6d456a72fe63 211 }
bmcclure 1:6d456a72fe63 212
bmcclure 1:6d456a72fe63 213
bmcclure 1:6d456a72fe63 214 /*
bmcclure 1:6d456a72fe63 215 * Drip dry after washing for 5 minutes
bmcclure 1:6d456a72fe63 216 */
bmcclure 1:6d456a72fe63 217 rgbLCD.clear();
bmcclure 1:6d456a72fe63 218 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 219 rgbLCD.print("DRIP DRYING! ");
bmcclure 1:6d456a72fe63 220 countDown(300);
bmcclure 1:6d456a72fe63 221 if(doorClosed == IN_OFF || cancelPending)
bmcclure 1:6d456a72fe63 222 {
bmcclure 1:6d456a72fe63 223 continue;
bmcclure 1:6d456a72fe63 224 }
bmcclure 1:6d456a72fe63 225
bmcclure 1:6d456a72fe63 226
bmcclure 1:6d456a72fe63 227 /*
bmcclure 1:6d456a72fe63 228 * Change the air out for 2 minutes
bmcclure 1:6d456a72fe63 229 */
bmcclure 1:6d456a72fe63 230 rgbLCD.clear();
bmcclure 1:6d456a72fe63 231 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 232 rgbLCD.print("AIR CYCLING! ");
bmcclure 1:6d456a72fe63 233 damperRotate(1); //vent opened
bmcclure 1:6d456a72fe63 234 if(!simulateMode)
bmcclure 1:6d456a72fe63 235 {
bmcclure 1:6d456a72fe63 236 fanRelay = OUT_ON; //fan on
bmcclure 1:6d456a72fe63 237 }
bmcclure 1:6d456a72fe63 238 countDown(120);
bmcclure 1:6d456a72fe63 239 if(doorClosed == IN_OFF || cancelPending)
bmcclure 1:6d456a72fe63 240 {
bmcclure 1:6d456a72fe63 241 continue;
bmcclure 1:6d456a72fe63 242 }
bmcclure 1:6d456a72fe63 243
bmcclure 1:6d456a72fe63 244
bmcclure 1:6d456a72fe63 245 /*
bmcclure 1:6d456a72fe63 246 * Entire cycle is done, close up and go back to waiting
bmcclure 1:6d456a72fe63 247 */
bmcclure 1:6d456a72fe63 248 greenRelay = OUT_ON; //green light on
bmcclure 1:6d456a72fe63 249 yellowRelay = OUT_OFF; //yellow light off
bmcclure 1:6d456a72fe63 250 doorInterlock = OUT_OFF; //door unlocked
bmcclure 1:6d456a72fe63 251 fanRelay = OUT_OFF; //fan off
bmcclure 1:6d456a72fe63 252 damperRotate(0); //damperRelay=0; //vent closed
bmcclure 1:6d456a72fe63 253 rgbLCD.clear();
bmcclure 1:6d456a72fe63 254 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 255 rgbLCD.print("Tank is ready! ");
bmcclure 1:6d456a72fe63 256 }
bmcclure 1:6d456a72fe63 257 else //door open
bmcclure 1:6d456a72fe63 258 {
bmcclure 1:6d456a72fe63 259 rgbLCD.locate(0,1);
bmcclure 1:6d456a72fe63 260 rgbLCD.print("Door open ");
bmcclure 1:6d456a72fe63 261 greenRelay = OUT_OFF; //green light OFF
bmcclure 1:6d456a72fe63 262 redRelay = OUT_ON; //turn red light ON
bmcclure 1:6d456a72fe63 263 yellowRelay = OUT_OFF;
bmcclure 1:6d456a72fe63 264 fanRelay = OUT_OFF; //fan stops
bmcclure 1:6d456a72fe63 265 damperRotate(1); //damperRelay=1; //damper closed
bmcclure 1:6d456a72fe63 266 }
bmcclure 1:6d456a72fe63 267
bmcclure 1:6d456a72fe63 268 wait(1);
bmcclure 1:6d456a72fe63 269 }
bmcclure 1:6d456a72fe63 270 }
bmcclure 1:6d456a72fe63 271
bmcclure 1:6d456a72fe63 272
bmcclure 1:6d456a72fe63 273
bmcclure 1:6d456a72fe63 274
dattranvnfrr 0:2f5d939d4a4a 275 void damperRotate(int damper) //damper condition
dattranvnfrr 0:2f5d939d4a4a 276 {
bmcclure 1:6d456a72fe63 277 if(damper==0 && damperIsOpen == true && !simulateMode)
dattranvnfrr 0:2f5d939d4a4a 278 {
bmcclure 1:6d456a72fe63 279 damperRelayAlt=OUT_ON; //toggle damper relay
bmcclure 1:6d456a72fe63 280 rgbLCD.locate(0,1);
bmcclure 1:6d456a72fe63 281 rgbLCD.print("Closing damper ");
dattranvnfrr 0:2f5d939d4a4a 282 wait(5);
bmcclure 1:6d456a72fe63 283 damperRelayAlt=OUT_OFF; //time out to reduce wear
bmcclure 1:6d456a72fe63 284 damperIsOpen = false;
bmcclure 1:6d456a72fe63 285 }
bmcclure 1:6d456a72fe63 286 else if(damper == 1 && damperIsOpen == false && !simulateMode)
bmcclure 1:6d456a72fe63 287 {
bmcclure 1:6d456a72fe63 288 damperRelay=OUT_ON; //toggle damper relay
bmcclure 1:6d456a72fe63 289 rgbLCD.locate(0,1);
bmcclure 1:6d456a72fe63 290 rgbLCD.print("Opening damper ");
bmcclure 1:6d456a72fe63 291 wait(5);
bmcclure 1:6d456a72fe63 292 damperRelay=OUT_OFF; //time out to reduce wear
bmcclure 1:6d456a72fe63 293 damperIsOpen = true;
dattranvnfrr 0:2f5d939d4a4a 294 }
bmcclure 1:6d456a72fe63 295 }
bmcclure 1:6d456a72fe63 296
bmcclure 1:6d456a72fe63 297 void fullLineItoA(int m, char* str)
bmcclure 1:6d456a72fe63 298 {
bmcclure 1:6d456a72fe63 299 if(str == NULL)
bmcclure 1:6d456a72fe63 300 {
bmcclure 1:6d456a72fe63 301 return;
bmcclure 1:6d456a72fe63 302 }
bmcclure 1:6d456a72fe63 303
bmcclure 1:6d456a72fe63 304 // Empty the array to 16 white spaces
bmcclure 1:6d456a72fe63 305 for(int j=0; j < 16; j++)
dattranvnfrr 0:2f5d939d4a4a 306 {
bmcclure 1:6d456a72fe63 307 str[j] = ' ';
dattranvnfrr 0:2f5d939d4a4a 308 }
bmcclure 1:6d456a72fe63 309 str[16] = 0;
bmcclure 1:6d456a72fe63 310
bmcclure 1:6d456a72fe63 311 // Put our counter in it, with the least-significant digit in col 4.
bmcclure 1:6d456a72fe63 312 int i = 3;
bmcclure 1:6d456a72fe63 313 do
bmcclure 1:6d456a72fe63 314 {
bmcclure 1:6d456a72fe63 315 str[i] = m%10 + '0';
bmcclure 1:6d456a72fe63 316 m /= 10;
bmcclure 1:6d456a72fe63 317 i--;
bmcclure 1:6d456a72fe63 318 }while(m > 0 && i >= 0);
dattranvnfrr 0:2f5d939d4a4a 319 }
dattranvnfrr 0:2f5d939d4a4a 320
dattranvnfrr 0:2f5d939d4a4a 321 void countDown(int s) //countdown in sec
dattranvnfrr 0:2f5d939d4a4a 322 {
bmcclure 1:6d456a72fe63 323 int m=0;
bmcclure 1:6d456a72fe63 324 char count[12]; // make a 'count' string
bmcclure 1:6d456a72fe63 325
bmcclure 1:6d456a72fe63 326 for(m=s; m>0; m--)
bmcclure 1:6d456a72fe63 327 {
bmcclure 1:6d456a72fe63 328 if(stopBtt == IN_ON)
bmcclure 1:6d456a72fe63 329 {
bmcclure 1:6d456a72fe63 330 cancelPending = true;
bmcclure 1:6d456a72fe63 331 break;
bmcclure 1:6d456a72fe63 332 }
bmcclure 1:6d456a72fe63 333
bmcclure 1:6d456a72fe63 334 fullLineItoA(m, count);
bmcclure 1:6d456a72fe63 335
bmcclure 1:6d456a72fe63 336 rgbLCD.locate(0,1);
bmcclure 1:6d456a72fe63 337 rgbLCD.print(count);
bmcclure 1:6d456a72fe63 338
bmcclure 1:6d456a72fe63 339 wait(1);
dattranvnfrr 0:2f5d939d4a4a 340 }
dattranvnfrr 0:2f5d939d4a4a 341 }
dattranvnfrr 0:2f5d939d4a4a 342
bmcclure 1:6d456a72fe63 343
bmcclure 1:6d456a72fe63 344 void debugMode()
dattranvnfrr 0:2f5d939d4a4a 345 {
bmcclure 1:6d456a72fe63 346 char displayLine1[17];
bmcclure 1:6d456a72fe63 347 char displayLine2[17];
bmcclure 1:6d456a72fe63 348 unsigned int count = 0;
bmcclure 1:6d456a72fe63 349
dattranvnfrr 0:2f5d939d4a4a 350 rgbLCD.clear();
dattranvnfrr 0:2f5d939d4a4a 351 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 352
bmcclure 1:6d456a72fe63 353 do
bmcclure 1:6d456a72fe63 354 {
bmcclure 1:6d456a72fe63 355 strcpy(displayLine1, "Door= ");
bmcclure 1:6d456a72fe63 356 if(doorClosed == 1)
bmcclure 1:6d456a72fe63 357 {
bmcclure 1:6d456a72fe63 358 strcat(displayLine1, "1");
bmcclure 1:6d456a72fe63 359 }
bmcclure 1:6d456a72fe63 360 else
bmcclure 1:6d456a72fe63 361 {
bmcclure 1:6d456a72fe63 362 strcat(displayLine1, "0");
bmcclure 1:6d456a72fe63 363 }
dattranvnfrr 0:2f5d939d4a4a 364
bmcclure 1:6d456a72fe63 365 strcat(displayLine1, ",Start=");
bmcclure 1:6d456a72fe63 366 if(cycleStartBtt == 1)
bmcclure 1:6d456a72fe63 367 {
bmcclure 1:6d456a72fe63 368 strcat(displayLine1, "1 ");
bmcclure 1:6d456a72fe63 369 }
bmcclure 1:6d456a72fe63 370 else
bmcclure 1:6d456a72fe63 371 {
bmcclure 1:6d456a72fe63 372 strcat(displayLine1, "0 ");
bmcclure 1:6d456a72fe63 373 }
dattranvnfrr 0:2f5d939d4a4a 374
bmcclure 1:6d456a72fe63 375
bmcclure 1:6d456a72fe63 376 strcpy(displayLine2, "Stop= ");
bmcclure 1:6d456a72fe63 377 if(stopBtt == 1)
bmcclure 1:6d456a72fe63 378 {
bmcclure 1:6d456a72fe63 379 strcat(displayLine2, "1 ");
bmcclure 1:6d456a72fe63 380 }
bmcclure 1:6d456a72fe63 381 else
dattranvnfrr 0:2f5d939d4a4a 382 {
bmcclure 1:6d456a72fe63 383 strcat(displayLine2, "0 ");
bmcclure 1:6d456a72fe63 384 }
bmcclure 1:6d456a72fe63 385
bmcclure 1:6d456a72fe63 386 // Every 2s, change the outputs
bmcclure 1:6d456a72fe63 387 if((count&7) == 0)
bmcclure 1:6d456a72fe63 388 {
bmcclure 1:6d456a72fe63 389 doorInterlock = OUT_OFF; //Door interlock
bmcclure 1:6d456a72fe63 390 fanRelay = OUT_OFF; //Fan control
bmcclure 1:6d456a72fe63 391 redRelay = OUT_OFF; //Red light
bmcclure 1:6d456a72fe63 392 yellowRelay = OUT_OFF; //Yellow light
bmcclure 1:6d456a72fe63 393 greenRelay = OUT_OFF; //Green light
bmcclure 1:6d456a72fe63 394 damperRelay = OUT_OFF; //Damper solenoid control
bmcclure 1:6d456a72fe63 395 damperRelayAlt = OUT_OFF; //Damper solenoid toggle control
bmcclure 1:6d456a72fe63 396 vfd = OUT_OFF; //VFD Start relay
dattranvnfrr 0:2f5d939d4a4a 397
bmcclure 1:6d456a72fe63 398 switch((count>>3)%8)
dattranvnfrr 0:2f5d939d4a4a 399 {
bmcclure 1:6d456a72fe63 400 case 0:
bmcclure 1:6d456a72fe63 401 doorInterlock = OUT_ON; //Door interlock
bmcclure 1:6d456a72fe63 402 strcat(displayLine2, " Lock ");
bmcclure 1:6d456a72fe63 403 break;
bmcclure 1:6d456a72fe63 404 case 1:
bmcclure 1:6d456a72fe63 405 fanRelay = OUT_ON; //Fan control
bmcclure 1:6d456a72fe63 406 strcat(displayLine2, " Fan ");
bmcclure 1:6d456a72fe63 407 break;
bmcclure 1:6d456a72fe63 408 case 2:
bmcclure 1:6d456a72fe63 409 redRelay = OUT_ON; //Red light
bmcclure 1:6d456a72fe63 410 strcat(displayLine2, " Red ");
bmcclure 1:6d456a72fe63 411 break;
bmcclure 1:6d456a72fe63 412 case 3:
bmcclure 1:6d456a72fe63 413 yellowRelay = OUT_ON; //Yellow light
bmcclure 1:6d456a72fe63 414 strcat(displayLine2, " Yellow ");
bmcclure 1:6d456a72fe63 415 break;
bmcclure 1:6d456a72fe63 416 case 4:
bmcclure 1:6d456a72fe63 417 greenRelay = OUT_ON; //Green light
bmcclure 1:6d456a72fe63 418 strcat(displayLine2, " Green ");
bmcclure 1:6d456a72fe63 419 break;
bmcclure 1:6d456a72fe63 420 case 5:
bmcclure 1:6d456a72fe63 421 damperRelay = OUT_ON; //Damper solenoid control
bmcclure 1:6d456a72fe63 422 strcat(displayLine2, " Damper1");
bmcclure 1:6d456a72fe63 423 break;
bmcclure 1:6d456a72fe63 424 case 6:
bmcclure 1:6d456a72fe63 425 damperRelayAlt = OUT_ON; //Damper solenoid toggle control
bmcclure 1:6d456a72fe63 426 strcat(displayLine2, " Damper2");
bmcclure 1:6d456a72fe63 427 break;
bmcclure 1:6d456a72fe63 428 case 7:
bmcclure 1:6d456a72fe63 429 // vfd = OUT_ON; //VFD Start relay
bmcclure 1:6d456a72fe63 430 strcat(displayLine2, " ");
bmcclure 1:6d456a72fe63 431 break;
dattranvnfrr 0:2f5d939d4a4a 432 }
dattranvnfrr 0:2f5d939d4a4a 433 }
bmcclure 1:6d456a72fe63 434
bmcclure 1:6d456a72fe63 435 rgbLCD.locate(0,0);
bmcclure 1:6d456a72fe63 436 rgbLCD.print(displayLine1);
bmcclure 1:6d456a72fe63 437 rgbLCD.locate(0,1);
bmcclure 1:6d456a72fe63 438 rgbLCD.print(displayLine2);
bmcclure 1:6d456a72fe63 439
bmcclure 1:6d456a72fe63 440 wait(.25);
bmcclure 1:6d456a72fe63 441 count++;
bmcclure 1:6d456a72fe63 442 }
bmcclure 1:6d456a72fe63 443 while(cycleStartBtt == IN_OFF || stopBtt == IN_OFF || doorClosed == IN_OFF);
dattranvnfrr 0:2f5d939d4a4a 444 }