Pre treatment tank control

Dependencies:   mbed Grove_LCD_RGB_Backlight DebounceIn

Committer:
dattranvnfrr
Date:
Wed Sep 18 18:13:50 2019 +0000
Revision:
0:2f5d939d4a4a
Child:
1:ca7bf48a2f71
TS

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
dattranvnfrr 0:2f5d939d4a4a 5 //input
dattranvnfrr 0:2f5d939d4a4a 6
dattranvnfrr 0:2f5d939d4a4a 7 DebounceIn doorClosed(p5); //Check door status
dattranvnfrr 0:2f5d939d4a4a 8 DebounceIn cycleStartBtt(p14); //cycle start button
dattranvnfrr 0:2f5d939d4a4a 9 InterruptIn stopBtt(p15); //stop button
dattranvnfrr 0:2f5d939d4a4a 10 //DigitalIn pot(p20);
dattranvnfrr 0:2f5d939d4a4a 11
dattranvnfrr 0:2f5d939d4a4a 12 //output
dattranvnfrr 0:2f5d939d4a4a 13 DigitalOut doorInterlock(p6); //Door interlock
dattranvnfrr 0:2f5d939d4a4a 14 DigitalOut fanRelay(p7); //Fan control
dattranvnfrr 0:2f5d939d4a4a 15 DigitalOut redRelay(p8); //Red light
dattranvnfrr 0:2f5d939d4a4a 16 DigitalOut yellowRelay(p11); //Yellow light
dattranvnfrr 0:2f5d939d4a4a 17 DigitalOut greenRelay(p12); //Green light
dattranvnfrr 0:2f5d939d4a4a 18 DigitalOut damperRelay(p13); //Damper solenoid control
dattranvnfrr 0:2f5d939d4a4a 19 DigitalOut damperRelayAlt(p16); //Damper solenoid toggle control
dattranvnfrr 0:2f5d939d4a4a 20 DigitalOut vfd(p17); //VFD Start relay
dattranvnfrr 0:2f5d939d4a4a 21
dattranvnfrr 0:2f5d939d4a4a 22 Grove_LCD_RGB_Backlight rgbLCD(p9, p10); //Timer display
dattranvnfrr 0:2f5d939d4a4a 23
dattranvnfrr 0:2f5d939d4a4a 24
dattranvnfrr 0:2f5d939d4a4a 25 I2C i2c(p9, p10);
dattranvnfrr 0:2f5d939d4a4a 26 //Serial pc(USBTX, USBRX);
dattranvnfrr 0:2f5d939d4a4a 27
dattranvnfrr 0:2f5d939d4a4a 28 //extern "C" void mbed_reset();
dattranvnfrr 0:2f5d939d4a4a 29
dattranvnfrr 0:2f5d939d4a4a 30 void damperRotate(int damper) //damper condition
dattranvnfrr 0:2f5d939d4a4a 31 {
dattranvnfrr 0:2f5d939d4a4a 32 if(damper==0)
dattranvnfrr 0:2f5d939d4a4a 33 {
dattranvnfrr 0:2f5d939d4a4a 34 damperRelayAlt=1; //toggle damper relay
dattranvnfrr 0:2f5d939d4a4a 35 wait(5);
dattranvnfrr 0:2f5d939d4a4a 36 damperRelayAlt=0; //time out to reduce wear
dattranvnfrr 0:2f5d939d4a4a 37 }
dattranvnfrr 0:2f5d939d4a4a 38 else //damper==1
dattranvnfrr 0:2f5d939d4a4a 39 {
dattranvnfrr 0:2f5d939d4a4a 40 damperRelay=1; //toggle damper relay
dattranvnfrr 0:2f5d939d4a4a 41 wait(5);
dattranvnfrr 0:2f5d939d4a4a 42 damperRelay=0; //time out to reduce wear
dattranvnfrr 0:2f5d939d4a4a 43 }
dattranvnfrr 0:2f5d939d4a4a 44 }
dattranvnfrr 0:2f5d939d4a4a 45
dattranvnfrr 0:2f5d939d4a4a 46 void countDown(int s) //countdown in sec
dattranvnfrr 0:2f5d939d4a4a 47 {
dattranvnfrr 0:2f5d939d4a4a 48 int m=0;
dattranvnfrr 0:2f5d939d4a4a 49 char cnt[12]; // make a 'count' string
dattranvnfrr 0:2f5d939d4a4a 50 for(m=s; m>0; m--)
dattranvnfrr 0:2f5d939d4a4a 51 {
dattranvnfrr 0:2f5d939d4a4a 52 sprintf(cnt, "%i ", m);
dattranvnfrr 0:2f5d939d4a4a 53 rgbLCD.locate(0,1);
dattranvnfrr 0:2f5d939d4a4a 54 rgbLCD.print(cnt);
dattranvnfrr 0:2f5d939d4a4a 55 wait(1);
dattranvnfrr 0:2f5d939d4a4a 56 }
dattranvnfrr 0:2f5d939d4a4a 57 }
dattranvnfrr 0:2f5d939d4a4a 58
dattranvnfrr 0:2f5d939d4a4a 59 void fullStop()
dattranvnfrr 0:2f5d939d4a4a 60 {
dattranvnfrr 0:2f5d939d4a4a 61 if(stopBtt==0)
dattranvnfrr 0:2f5d939d4a4a 62 {
dattranvnfrr 0:2f5d939d4a4a 63 //Display status
dattranvnfrr 0:2f5d939d4a4a 64 greenRelay=0; //green light OFF
dattranvnfrr 0:2f5d939d4a4a 65 yellowRelay=0; //yellow light OFF
dattranvnfrr 0:2f5d939d4a4a 66 redRelay=1; //turn red light ON
dattranvnfrr 0:2f5d939d4a4a 67 rgbLCD.clear();
dattranvnfrr 0:2f5d939d4a4a 68 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 69 rgbLCD.print("CYCLE STOPPED. ");
dattranvnfrr 0:2f5d939d4a4a 70 vfd=0; //pump off
dattranvnfrr 0:2f5d939d4a4a 71 doorInterlock=1; //door latched
dattranvnfrr 0:2f5d939d4a4a 72 wait(2);
dattranvnfrr 0:2f5d939d4a4a 73 fanRelay=0; //fan stops
dattranvnfrr 0:2f5d939d4a4a 74 damperRotate(0); //damperRelay=0; //damper closed
dattranvnfrr 0:2f5d939d4a4a 75
dattranvnfrr 0:2f5d939d4a4a 76
dattranvnfrr 0:2f5d939d4a4a 77 //wait 60sec
dattranvnfrr 0:2f5d939d4a4a 78 countDown(10);
dattranvnfrr 0:2f5d939d4a4a 79 doorInterlock=0; //door unlatched
dattranvnfrr 0:2f5d939d4a4a 80
dattranvnfrr 0:2f5d939d4a4a 81 stopBtt.mode(PullUp);
dattranvnfrr 0:2f5d939d4a4a 82 wait(.1);
dattranvnfrr 0:2f5d939d4a4a 83 NVIC_SystemReset(); //reset system
dattranvnfrr 0:2f5d939d4a4a 84 }
dattranvnfrr 0:2f5d939d4a4a 85 }
dattranvnfrr 0:2f5d939d4a4a 86
dattranvnfrr 0:2f5d939d4a4a 87 int main()
dattranvnfrr 0:2f5d939d4a4a 88 {
dattranvnfrr 0:2f5d939d4a4a 89
dattranvnfrr 0:2f5d939d4a4a 90 //on power up status
dattranvnfrr 0:2f5d939d4a4a 91 cycleStartBtt.mode(PullUp);
dattranvnfrr 0:2f5d939d4a4a 92 wait(.1);
dattranvnfrr 0:2f5d939d4a4a 93
dattranvnfrr 0:2f5d939d4a4a 94 doorClosed.mode(PullUp);
dattranvnfrr 0:2f5d939d4a4a 95 wait(.1);
dattranvnfrr 0:2f5d939d4a4a 96
dattranvnfrr 0:2f5d939d4a4a 97 stopBtt.mode(PullUp);
dattranvnfrr 0:2f5d939d4a4a 98 wait(.1);
dattranvnfrr 0:2f5d939d4a4a 99 stopBtt.fall(&fullStop); // attach the address of the flip function to the rising edge
dattranvnfrr 0:2f5d939d4a4a 100
dattranvnfrr 0:2f5d939d4a4a 101
dattranvnfrr 0:2f5d939d4a4a 102 //check for closed door before running fan
dattranvnfrr 0:2f5d939d4a4a 103 while(doorClosed!=0)
dattranvnfrr 0:2f5d939d4a4a 104 {
dattranvnfrr 0:2f5d939d4a4a 105 rgbLCD.clear();
dattranvnfrr 0:2f5d939d4a4a 106 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 107 rgbLCD.print("Close the door ");
dattranvnfrr 0:2f5d939d4a4a 108 }
dattranvnfrr 0:2f5d939d4a4a 109
dattranvnfrr 0:2f5d939d4a4a 110 //Display startup countdown
dattranvnfrr 0:2f5d939d4a4a 111 //Startin up and prep the tank
dattranvnfrr 0:2f5d939d4a4a 112 rgbLCD.clear();
dattranvnfrr 0:2f5d939d4a4a 113 rgbLCD.setRGB(0x00, 0x66, 0xaa); //set the color
dattranvnfrr 0:2f5d939d4a4a 114 rgbLCD.print("Starting up... ");
dattranvnfrr 0:2f5d939d4a4a 115
dattranvnfrr 0:2f5d939d4a4a 116 vfd=0;
dattranvnfrr 0:2f5d939d4a4a 117 damperRotate(1); //vent opened;
dattranvnfrr 0:2f5d939d4a4a 118 doorInterlock=1;
dattranvnfrr 0:2f5d939d4a4a 119 fanRelay=1;
dattranvnfrr 0:2f5d939d4a4a 120 greenRelay=0;
dattranvnfrr 0:2f5d939d4a4a 121 yellowRelay=0;
dattranvnfrr 0:2f5d939d4a4a 122 redRelay=0;
dattranvnfrr 0:2f5d939d4a4a 123
dattranvnfrr 0:2f5d939d4a4a 124 //start timer for 90sec
dattranvnfrr 0:2f5d939d4a4a 125 countDown(5);
dattranvnfrr 0:2f5d939d4a4a 126
dattranvnfrr 0:2f5d939d4a4a 127 //Tank is ready
dattranvnfrr 0:2f5d939d4a4a 128 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 129 rgbLCD.print("Tank is ready! ");
dattranvnfrr 0:2f5d939d4a4a 130 greenRelay=1; //green light on
dattranvnfrr 0:2f5d939d4a4a 131
dattranvnfrr 0:2f5d939d4a4a 132 //doorInterlock=0; //interlock unlatched, ready to load material into the tank
dattranvnfrr 0:2f5d939d4a4a 133 fanRelay=0; //fan off
dattranvnfrr 0:2f5d939d4a4a 134
dattranvnfrr 0:2f5d939d4a4a 135 while(1)
dattranvnfrr 0:2f5d939d4a4a 136 {
dattranvnfrr 0:2f5d939d4a4a 137
dattranvnfrr 0:2f5d939d4a4a 138 if(doorClosed==0) //door closed
dattranvnfrr 0:2f5d939d4a4a 139 {
dattranvnfrr 0:2f5d939d4a4a 140 rgbLCD.locate(0,1);
dattranvnfrr 0:2f5d939d4a4a 141 rgbLCD.print("Door closed ");
dattranvnfrr 0:2f5d939d4a4a 142 greenRelay=1; //green light stays on
dattranvnfrr 0:2f5d939d4a4a 143 yellowRelay=0; //yellow light off
dattranvnfrr 0:2f5d939d4a4a 144 redRelay=0; //red light off
dattranvnfrr 0:2f5d939d4a4a 145
dattranvnfrr 0:2f5d939d4a4a 146 doorInterlock=0; //door unlocked
dattranvnfrr 0:2f5d939d4a4a 147 fanRelay=0;
dattranvnfrr 0:2f5d939d4a4a 148
dattranvnfrr 0:2f5d939d4a4a 149
dattranvnfrr 0:2f5d939d4a4a 150 //cycle start button pressed - wash cycle starts
dattranvnfrr 0:2f5d939d4a4a 151 if(cycleStartBtt==0)
dattranvnfrr 0:2f5d939d4a4a 152 {
dattranvnfrr 0:2f5d939d4a4a 153
dattranvnfrr 0:2f5d939d4a4a 154 //Display status
dattranvnfrr 0:2f5d939d4a4a 155 rgbLCD.clear();
dattranvnfrr 0:2f5d939d4a4a 156 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 157 rgbLCD.print("CYCLE STARTED! ");
dattranvnfrr 0:2f5d939d4a4a 158 greenRelay=0; //green light off
dattranvnfrr 0:2f5d939d4a4a 159 yellowRelay=1; //yellow light on
dattranvnfrr 0:2f5d939d4a4a 160 doorInterlock=1; //door locked
dattranvnfrr 0:2f5d939d4a4a 161 fanRelay=0; //fan stop
dattranvnfrr 0:2f5d939d4a4a 162 damperRotate(0); //vent close
dattranvnfrr 0:2f5d939d4a4a 163 vfd=1; //vfd for pump up to speed
dattranvnfrr 0:2f5d939d4a4a 164
dattranvnfrr 0:2f5d939d4a4a 165 //Display wash cycle countdown
dattranvnfrr 0:2f5d939d4a4a 166 //start timer for 2min
dattranvnfrr 0:2f5d939d4a4a 167 countDown(7);
dattranvnfrr 0:2f5d939d4a4a 168
dattranvnfrr 0:2f5d939d4a4a 169 //finished washing
dattranvnfrr 0:2f5d939d4a4a 170 vfd=0; //pump off
dattranvnfrr 0:2f5d939d4a4a 171 //Display status
dattranvnfrr 0:2f5d939d4a4a 172 rgbLCD.clear();
dattranvnfrr 0:2f5d939d4a4a 173 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 174 rgbLCD.print("CYCLE FINISHED! ");
dattranvnfrr 0:2f5d939d4a4a 175 countDown(5);
dattranvnfrr 0:2f5d939d4a4a 176
dattranvnfrr 0:2f5d939d4a4a 177 //drip dry after washing
dattranvnfrr 0:2f5d939d4a4a 178 //Display status
dattranvnfrr 0:2f5d939d4a4a 179 rgbLCD.clear();
dattranvnfrr 0:2f5d939d4a4a 180 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 181 rgbLCD.print("DRIP DRYING! ");
dattranvnfrr 0:2f5d939d4a4a 182
dattranvnfrr 0:2f5d939d4a4a 183 //start timer for 5min
dattranvnfrr 0:2f5d939d4a4a 184 countDown(10);
dattranvnfrr 0:2f5d939d4a4a 185
dattranvnfrr 0:2f5d939d4a4a 186 //Display status
dattranvnfrr 0:2f5d939d4a4a 187 rgbLCD.clear();
dattranvnfrr 0:2f5d939d4a4a 188 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 189 rgbLCD.print("AIR CYCLING! ");
dattranvnfrr 0:2f5d939d4a4a 190 damperRotate(1); //vent opened
dattranvnfrr 0:2f5d939d4a4a 191 fanRelay=1; //fan on
dattranvnfrr 0:2f5d939d4a4a 192
dattranvnfrr 0:2f5d939d4a4a 193 //Display air cycling countdown
dattranvnfrr 0:2f5d939d4a4a 194 //start timer for 2min
dattranvnfrr 0:2f5d939d4a4a 195 countDown(10);
dattranvnfrr 0:2f5d939d4a4a 196
dattranvnfrr 0:2f5d939d4a4a 197 //finished cycling air
dattranvnfrr 0:2f5d939d4a4a 198 greenRelay=1; //green light on
dattranvnfrr 0:2f5d939d4a4a 199 yellowRelay=0; //yellow light off
dattranvnfrr 0:2f5d939d4a4a 200 doorInterlock=0; //door unlocked
dattranvnfrr 0:2f5d939d4a4a 201 fanRelay=0; //fan off
dattranvnfrr 0:2f5d939d4a4a 202 damperRotate(0); //damperRelay=0; //vent closed
dattranvnfrr 0:2f5d939d4a4a 203
dattranvnfrr 0:2f5d939d4a4a 204 //Tank is ready
dattranvnfrr 0:2f5d939d4a4a 205 rgbLCD.clear();
dattranvnfrr 0:2f5d939d4a4a 206 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 207 rgbLCD.print("Tank is ready! ");
dattranvnfrr 0:2f5d939d4a4a 208 }
dattranvnfrr 0:2f5d939d4a4a 209 /*
dattranvnfrr 0:2f5d939d4a4a 210 //Stop button is hit
dattranvnfrr 0:2f5d939d4a4a 211 if(stopBtt==1)
dattranvnfrr 0:2f5d939d4a4a 212 {
dattranvnfrr 0:2f5d939d4a4a 213 //Display status
dattranvnfrr 0:2f5d939d4a4a 214 rgbLCD.locate(0,0);
dattranvnfrr 0:2f5d939d4a4a 215 rgbLCD.print("CYCLE STOPPED. ");
dattranvnfrr 0:2f5d939d4a4a 216 vfd=0; //pump off
dattranvnfrr 0:2f5d939d4a4a 217 doorInterlock=1; //door latched
dattranvnfrr 0:2f5d939d4a4a 218 wait(2);
dattranvnfrr 0:2f5d939d4a4a 219 fanRelay=0; //fan stops
dattranvnfrr 0:2f5d939d4a4a 220 damperRotate(0); //damperRelay=0; //damper closed
dattranvnfrr 0:2f5d939d4a4a 221
dattranvnfrr 0:2f5d939d4a4a 222 //wait 60sec
dattranvnfrr 0:2f5d939d4a4a 223 countDown(10);
dattranvnfrr 0:2f5d939d4a4a 224 doorInterlock=0; //door unlatched
dattranvnfrr 0:2f5d939d4a4a 225 }
dattranvnfrr 0:2f5d939d4a4a 226 */
dattranvnfrr 0:2f5d939d4a4a 227 }
dattranvnfrr 0:2f5d939d4a4a 228 else //door open
dattranvnfrr 0:2f5d939d4a4a 229 {
dattranvnfrr 0:2f5d939d4a4a 230 rgbLCD.locate(0,1);
dattranvnfrr 0:2f5d939d4a4a 231 rgbLCD.print("Door opened ");
dattranvnfrr 0:2f5d939d4a4a 232 greenRelay=0; //green light OFF
dattranvnfrr 0:2f5d939d4a4a 233 redRelay=1; //turn red light ON
dattranvnfrr 0:2f5d939d4a4a 234 yellowRelay=0;
dattranvnfrr 0:2f5d939d4a4a 235 fanRelay=0; //fan stops
dattranvnfrr 0:2f5d939d4a4a 236 damperRotate(1); //damperRelay=1; //damper closed
dattranvnfrr 0:2f5d939d4a4a 237
dattranvnfrr 0:2f5d939d4a4a 238 }
dattranvnfrr 0:2f5d939d4a4a 239
dattranvnfrr 0:2f5d939d4a4a 240 }
dattranvnfrr 0:2f5d939d4a4a 241 }