f

Dependencies:   TS_DISCO_F746NG mbed LCD_DISCO_F746NG mbed-rtos BSP_DISCO_F746NG FatFS X_NUCLEO_IHM02A1

Committer:
emperord
Date:
Fri Mar 08 13:48:46 2019 +0000
Revision:
2:37a61db8b04b
Parent:
0:9933f7db9a9b
f

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:9933f7db9a9b 1 #include "mbed.h"
bcostm 0:9933f7db9a9b 2 #include "TS_DISCO_F746NG.h"
bcostm 0:9933f7db9a9b 3 #include "LCD_DISCO_F746NG.h"
emperord 2:37a61db8b04b 4 #include "eeprom.h"
emperord 2:37a61db8b04b 5 #include <ctype.h>
emperord 2:37a61db8b04b 6 #include "rtos.h"
emperord 2:37a61db8b04b 7 #define USE_STM32746G_DISCOVERY
emperord 2:37a61db8b04b 8 #include "stm32f7xx_hal.h"
emperord 2:37a61db8b04b 9 #include "stm32746g_discovery.h"
emperord 2:37a61db8b04b 10 #include "stm32746g_discovery_sd.h"
emperord 2:37a61db8b04b 11 #include "string.h"
emperord 2:37a61db8b04b 12 #include "stm32746g_discovery_lcd.h"
emperord 2:37a61db8b04b 13 #include "ff_gen_drv.h"
emperord 2:37a61db8b04b 14 #include "sd_diskio.h"
emperord 2:37a61db8b04b 15 #include "XNucleoIHM02A1.h"
emperord 2:37a61db8b04b 16 #include "wolfman.h"
emperord 2:37a61db8b04b 17 #include "hfl.h"
emperord 2:37a61db8b04b 18 #include "PCF85263AT.h"
emperord 2:37a61db8b04b 19
emperord 2:37a61db8b04b 20 #define FRAME_BUFFER 0xC0000000
emperord 2:37a61db8b04b 21 #define SD_IN_BUFFER 0xC0140000
emperord 2:37a61db8b04b 22 #define SD_OUT_BUFFER 0xC0280000
emperord 2:37a61db8b04b 23
emperord 2:37a61db8b04b 24
emperord 2:37a61db8b04b 25 I2C i2c(D14,D15); // sda, scl
emperord 2:37a61db8b04b 26
emperord 2:37a61db8b04b 27 char cmd[32];
emperord 2:37a61db8b04b 28 dt_dat dt;
emperord 2:37a61db8b04b 29
emperord 2:37a61db8b04b 30 FATFS SDFatFs;
emperord 2:37a61db8b04b 31 FIL MyFile;
emperord 2:37a61db8b04b 32
emperord 2:37a61db8b04b 33 Thread thread;
emperord 2:37a61db8b04b 34 Thread thread2;
emperord 2:37a61db8b04b 35 Thread thread3;
emperord 2:37a61db8b04b 36
bcostm 0:9933f7db9a9b 37
bcostm 0:9933f7db9a9b 38 LCD_DISCO_F746NG lcd;
bcostm 0:9933f7db9a9b 39 TS_DISCO_F746NG ts;
bcostm 0:9933f7db9a9b 40
emperord 2:37a61db8b04b 41 extern SD_HandleTypeDef uSdHandle;
emperord 2:37a61db8b04b 42 DMA2D_HandleTypeDef hdma2d_disco;
emperord 2:37a61db8b04b 43 Serial pc(USBTX, USBRX);
emperord 2:37a61db8b04b 44
emperord 2:37a61db8b04b 45 char SDPath[4];
emperord 2:37a61db8b04b 46 //char text [40];
emperord 2:37a61db8b04b 47 char c;
emperord 2:37a61db8b04b 48
emperord 2:37a61db8b04b 49 TS_StateTypeDef TS_State;
emperord 2:37a61db8b04b 50
emperord 2:37a61db8b04b 51 uint16_t x, y;
emperord 2:37a61db8b04b 52 uint8_t text1[30];
emperord 2:37a61db8b04b 53 uint8_t text2[30];
emperord 2:37a61db8b04b 54 uint8_t text3[30];
emperord 2:37a61db8b04b 55 uint8_t text4[60];
emperord 2:37a61db8b04b 56 uint8_t text5[60];
emperord 2:37a61db8b04b 57 uint8_t textn1[30];
emperord 2:37a61db8b04b 58 uint8_t textn2[30];
emperord 2:37a61db8b04b 59 uint8_t textn3[30];
emperord 2:37a61db8b04b 60 uint8_t textn4[60];
emperord 2:37a61db8b04b 61 uint8_t textn5[60];
emperord 2:37a61db8b04b 62 uint8_t savereading[120];
emperord 2:37a61db8b04b 63 uint8_t currenttime[60];
emperord 2:37a61db8b04b 64 uint8_t idx;
emperord 2:37a61db8b04b 65 uint8_t cleared = 0;
emperord 2:37a61db8b04b 66 uint8_t prev_nb_touches = 0;
emperord 2:37a61db8b04b 67 static uint8_t nus_buffer[20];
emperord 2:37a61db8b04b 68 double Silver = 0.0;
emperord 2:37a61db8b04b 69 double Copper = 0.0;
emperord 2:37a61db8b04b 70 double LEDCUR = 0.0;
emperord 2:37a61db8b04b 71 uint8_t cyclestep[7];
emperord 2:37a61db8b04b 72 bool CuMODE = true;
emperord 2:37a61db8b04b 73 bool AgMODE = true;
emperord 2:37a61db8b04b 74 int screenstate = 0;
emperord 2:37a61db8b04b 75 int MODE = 0;
emperord 2:37a61db8b04b 76 int ZERO = 0.0;
emperord 2:37a61db8b04b 77 int DARK = 0.0;
emperord 2:37a61db8b04b 78 int READ = 0.0;
emperord 2:37a61db8b04b 79 int LVL = 0.0;
emperord 2:37a61db8b04b 80 double RAW = 0.0;
emperord 2:37a61db8b04b 81 double SilverRAW = 0.0;
emperord 2:37a61db8b04b 82 double CopperRAW = 0.0;
emperord 2:37a61db8b04b 83 int writefail = 0;
emperord 2:37a61db8b04b 84 int* toucharrow;
emperord 2:37a61db8b04b 85 int* touchbutt;
emperord 2:37a61db8b04b 86 bool ManMode = false;
emperord 2:37a61db8b04b 87 FRESULT ress;
emperord 2:37a61db8b04b 88 uint32_t bytesread;
emperord 2:37a61db8b04b 89 double TempCurrent = 0.0;
emperord 2:37a61db8b04b 90
emperord 2:37a61db8b04b 91 //PwmOut pump1(PA_8);
emperord 2:37a61db8b04b 92
emperord 2:37a61db8b04b 93 DigitalOut pump1(D0); // PA_8
emperord 2:37a61db8b04b 94 DigitalOut pump2(D1); //PA_15;
emperord 2:37a61db8b04b 95 DigitalOut pump3(A3);
emperord 2:37a61db8b04b 96 //DigitalOut pump4(A2);
emperord 2:37a61db8b04b 97 DigitalOut pump5(A4);
emperord 2:37a61db8b04b 98 DigitalOut pump6(A5);
emperord 2:37a61db8b04b 99
emperord 2:37a61db8b04b 100 PwmOut LED515(D10);
emperord 2:37a61db8b04b 101 PwmOut LED480(A2);
emperord 2:37a61db8b04b 102 DigitalOut LEDLD(D8);
emperord 2:37a61db8b04b 103 DigitalOut LEDBL(D9);
emperord 2:37a61db8b04b 104 DigitalOut Tempcs(A0);
emperord 2:37a61db8b04b 105 DigitalOut Heat(A1);
emperord 2:37a61db8b04b 106
emperord 2:37a61db8b04b 107
emperord 2:37a61db8b04b 108 SPI spi(D11, D12, D13); // mosi, miso, sclk
emperord 2:37a61db8b04b 109 DigitalOut cs(D7);
emperord 2:37a61db8b04b 110
emperord 2:37a61db8b04b 111
emperord 2:37a61db8b04b 112
emperord 2:37a61db8b04b 113 /* Number of movements per revolution. */
emperord 2:37a61db8b04b 114 #define MPR_1 4
emperord 2:37a61db8b04b 115
emperord 2:37a61db8b04b 116 /* Number of steps. */
emperord 2:37a61db8b04b 117 #define STEPS_1 (200 * 128) /* 1 revolution given a 400 steps motor configured at 1/128 microstep mode. */
emperord 2:37a61db8b04b 118 #define STEPS_2 (STEPS_1 * 2)
emperord 2:37a61db8b04b 119
emperord 2:37a61db8b04b 120 /* Delay in milliseconds. */
emperord 2:37a61db8b04b 121 #define DELAY_1 1000
emperord 2:37a61db8b04b 122 #define DELAY_2 2000
emperord 2:37a61db8b04b 123 #define DELAY_3 5000
emperord 2:37a61db8b04b 124
emperord 2:37a61db8b04b 125
emperord 2:37a61db8b04b 126 ///XNucleoIHM02A1 *x_nucleo_ihm02a1;
emperord 2:37a61db8b04b 127 L6470_init_t init[L6470DAISYCHAINSIZE] = {
emperord 2:37a61db8b04b 128 /* First Motor. */
emperord 2:37a61db8b04b 129 {
emperord 2:37a61db8b04b 130 /* Ic configuration. */
emperord 2:37a61db8b04b 131 },
emperord 2:37a61db8b04b 132
emperord 2:37a61db8b04b 133 /* Second Motor. */
emperord 2:37a61db8b04b 134 {
emperord 2:37a61db8b04b 135 12.0, /* Motor supply voltage in V. */
emperord 2:37a61db8b04b 136 200, /* Min number of steps per revolution for the motor. */
emperord 2:37a61db8b04b 137 1.5, /* Max motor phase voltage in A. */
emperord 2:37a61db8b04b 138 4.2, /* Max motor phase voltage in V. */
emperord 2:37a61db8b04b 139 100.0, /* Motor initial speed [step/s]. */
emperord 2:37a61db8b04b 140 400.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
emperord 2:37a61db8b04b 141 400.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
emperord 2:37a61db8b04b 142 900.0, /* Motor maximum speed [step/s]. */
emperord 2:37a61db8b04b 143 0.0, /* Motor minimum speed [step/s]. */
emperord 2:37a61db8b04b 144 902.7, /* Motor full-step speed threshold [step/s]. */
emperord 2:37a61db8b04b 145 1.5, /* Holding kval [V]. */
emperord 2:37a61db8b04b 146 5.2, /* Constant speed kval [V]. */
emperord 2:37a61db8b04b 147 5.2, /* Acceleration starting kval [V]. */
emperord 2:37a61db8b04b 148 5.2, /* Deceleration starting kval [V]. */
emperord 2:37a61db8b04b 149 371.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
emperord 2:37a61db8b04b 150 392.1569e-6, /* Start slope [s/step]. */
emperord 2:37a61db8b04b 151 643.1372e-6, /* Acceleration final slope [s/step]. */
emperord 2:37a61db8b04b 152 643.1372e-6, /* Deceleration final slope [s/step]. */
emperord 2:37a61db8b04b 153 0, /* Thermal compensation factor (range [0, 15]). */
emperord 2:37a61db8b04b 154 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
emperord 2:37a61db8b04b 155 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
emperord 2:37a61db8b04b 156 StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
emperord 2:37a61db8b04b 157 0xFF, /* Alarm conditions enable. */
emperord 2:37a61db8b04b 158 0x2E88 /* Ic configuration. */
emperord 2:37a61db8b04b 159 }
emperord 2:37a61db8b04b 160 };
emperord 2:37a61db8b04b 161
emperord 2:37a61db8b04b 162 XNucleoIHM02A1 *x_nucleo_ihm02a1 = new XNucleoIHM02A1(&init[0], &init[1], D5/*D14*/, D4/*D15*/, D2/*D4*/, D6/*A2*/, D11, D12, D13);
emperord 2:37a61db8b04b 163 L6470 **motors = x_nucleo_ihm02a1->get_components();
emperord 2:37a61db8b04b 164
emperord 2:37a61db8b04b 165
emperord 2:37a61db8b04b 166
emperord 2:37a61db8b04b 167 /* Virtual address defined by the user: 0xFFFF value is prohibited */
emperord 2:37a61db8b04b 168 uint16_t VirtAddVarTab[NB_OF_VAR] = {0x5555, 0x6666, 0x7777, 0x8888, 0x8899, 0x5655, 0x6776, 0x7887, 0x7117};
emperord 2:37a61db8b04b 169 uint16_t VarDataTab[] = {2, 1, 5, 1, 1, 60, 1, 0, 0};
emperord 2:37a61db8b04b 170
emperord 2:37a61db8b04b 171
emperord 2:37a61db8b04b 172 //ADC Struct for sensor
emperord 2:37a61db8b04b 173 union LTC2400 {
emperord 2:37a61db8b04b 174 unsigned int raw;
emperord 2:37a61db8b04b 175 unsigned char byte[4];
emperord 2:37a61db8b04b 176 struct {
emperord 2:37a61db8b04b 177 unsigned int
emperord 2:37a61db8b04b 178 sub:4,
emperord 2:37a61db8b04b 179 reading:24,
emperord 2:37a61db8b04b 180 exr:1,
emperord 2:37a61db8b04b 181 sgn:1,
emperord 2:37a61db8b04b 182 dmy:1,
emperord 2:37a61db8b04b 183 eoc:1;
emperord 2:37a61db8b04b 184 };
emperord 2:37a61db8b04b 185 } adc;
emperord 2:37a61db8b04b 186
emperord 2:37a61db8b04b 187 //Prime Button
emperord 2:37a61db8b04b 188 int primeon[4];
emperord 2:37a61db8b04b 189 int pcount = 0;
emperord 2:37a61db8b04b 190 //Man Button
emperord 2:37a61db8b04b 191 int Manonoff[4];
emperord 2:37a61db8b04b 192 //CuMODE Button
emperord 2:37a61db8b04b 193 int CuMODEonoff[4];
emperord 2:37a61db8b04b 194 //AgMODE Button
emperord 2:37a61db8b04b 195 int AgMODEonoff[4];
emperord 2:37a61db8b04b 196 //screen mode
emperord 2:37a61db8b04b 197 int screenmode[4];
emperord 2:37a61db8b04b 198 //All Button
emperord 2:37a61db8b04b 199 int Aonoff[4];
emperord 2:37a61db8b04b 200 bool Aon = 0;
emperord 2:37a61db8b04b 201 //pump1
emperord 2:37a61db8b04b 202 double p1count = 3;
emperord 2:37a61db8b04b 203 int p1up[4];
emperord 2:37a61db8b04b 204 int p1down[4];
emperord 2:37a61db8b04b 205 int p1onoff[4];
emperord 2:37a61db8b04b 206 bool p1on = false;
emperord 2:37a61db8b04b 207 //pump2
emperord 2:37a61db8b04b 208 double p2count = 5;
emperord 2:37a61db8b04b 209 int p2up[4];
emperord 2:37a61db8b04b 210 int p2down[4];
emperord 2:37a61db8b04b 211 int p2onoff[4];
emperord 2:37a61db8b04b 212 bool p2on = false;
emperord 2:37a61db8b04b 213 //pump3
emperord 2:37a61db8b04b 214 double p3count = 1;
emperord 2:37a61db8b04b 215 int p3up[4];
emperord 2:37a61db8b04b 216 int p3down[4];
emperord 2:37a61db8b04b 217 int p3onoff[4];
emperord 2:37a61db8b04b 218 bool p3on = false;
emperord 2:37a61db8b04b 219 //pump4
emperord 2:37a61db8b04b 220 double p4count = 1;
emperord 2:37a61db8b04b 221 int p4up[4];
emperord 2:37a61db8b04b 222 int p4down[4];
emperord 2:37a61db8b04b 223 int p4onoff[4];
emperord 2:37a61db8b04b 224 bool p4on = false;
emperord 2:37a61db8b04b 225 //Sole5
emperord 2:37a61db8b04b 226 double p5count = 1;
emperord 2:37a61db8b04b 227 int p5up[4];
emperord 2:37a61db8b04b 228 int p5down[4];
emperord 2:37a61db8b04b 229 int p5onoff[4];
emperord 2:37a61db8b04b 230 bool p5on = false;
emperord 2:37a61db8b04b 231 //Pump6
emperord 2:37a61db8b04b 232 double p6count = 6;
emperord 2:37a61db8b04b 233 int p6up[4];
emperord 2:37a61db8b04b 234 int p6down[4];
emperord 2:37a61db8b04b 235 int p6onoff[4];
emperord 2:37a61db8b04b 236 bool p6on = false;
emperord 2:37a61db8b04b 237 //Pump7
emperord 2:37a61db8b04b 238 double p7count = 1;
emperord 2:37a61db8b04b 239 int p7up[4];
emperord 2:37a61db8b04b 240 int p7down[4];
emperord 2:37a61db8b04b 241 int p7onoff[4];
emperord 2:37a61db8b04b 242 bool p7on = false;
emperord 2:37a61db8b04b 243
emperord 2:37a61db8b04b 244 //date/time
emperord 2:37a61db8b04b 245 double d1count = 1;
emperord 2:37a61db8b04b 246 int d1up[4];
emperord 2:37a61db8b04b 247 int d1down[4];
emperord 2:37a61db8b04b 248 double d2count = 1;
emperord 2:37a61db8b04b 249 int d2up[4];
emperord 2:37a61db8b04b 250 int d2down[4];
emperord 2:37a61db8b04b 251 double d3count = 1;
emperord 2:37a61db8b04b 252 int d3up[4];
emperord 2:37a61db8b04b 253 int d3down[4];
emperord 2:37a61db8b04b 254 double d4count = 1;
emperord 2:37a61db8b04b 255 int d4up[4];
emperord 2:37a61db8b04b 256 int d4down[4];
emperord 2:37a61db8b04b 257 double d5count = 1;
emperord 2:37a61db8b04b 258 int d5up[4];
emperord 2:37a61db8b04b 259 int d5down[4];
emperord 2:37a61db8b04b 260 int savedate[4];
emperord 2:37a61db8b04b 261 double d6count = 0;
emperord 2:37a61db8b04b 262 int d6up[4];
emperord 2:37a61db8b04b 263 int d6down[4];
emperord 2:37a61db8b04b 264
bcostm 0:9933f7db9a9b 265
emperord 2:37a61db8b04b 266 void set_ch(char sel)
emperord 2:37a61db8b04b 267 { // PCA9541のサンプル
emperord 2:37a61db8b04b 268 // MST_0側の自分にスレーブ側の制御権を得る場合
emperord 2:37a61db8b04b 269 cmd[0] = 1; // PCA9541 コマンドコード Cont Reg
emperord 2:37a61db8b04b 270 i2c.write( 0xe2, cmd, 1); // Cont Regを指定
emperord 2:37a61db8b04b 271 i2c.read( 0xe2, cmd, 1); // Cont Regを読込み
emperord 2:37a61db8b04b 272 wait(0.1); // 0.1s待つ
emperord 2:37a61db8b04b 273 switch(cmd[0] & 0xf)
emperord 2:37a61db8b04b 274 {
emperord 2:37a61db8b04b 275 case 0: // bus off, has control
emperord 2:37a61db8b04b 276 case 1: // bus off, no control
emperord 2:37a61db8b04b 277 case 5: // bus on, no control
emperord 2:37a61db8b04b 278 cmd[0] = 1; // PCA9541 コマンドコード Cont Reg
emperord 2:37a61db8b04b 279 cmd[1] = 4; // bus on, has control
emperord 2:37a61db8b04b 280 i2c.write( 0xe2, cmd, 2); // Cont Regにcmd[1]を書込み
emperord 2:37a61db8b04b 281 i2c.read( 0xe2, cmd, 1); // Cont Regを読込み
emperord 2:37a61db8b04b 282 break;
emperord 2:37a61db8b04b 283 case 2: // bus off, no control
emperord 2:37a61db8b04b 284 case 3: // bus off, has control
emperord 2:37a61db8b04b 285 case 6: // bus on, no control
emperord 2:37a61db8b04b 286 cmd[0] = 1; // PCA9541 コマンドコード Cont Reg
emperord 2:37a61db8b04b 287 cmd[1] = 5; // bus on, has control
emperord 2:37a61db8b04b 288 i2c.write( 0xe2, cmd, 2); // Cont Regにcmd[1]を書込み
emperord 2:37a61db8b04b 289 i2c.read( 0xe2, cmd, 1); // Cont Regを読込み
emperord 2:37a61db8b04b 290 break;
emperord 2:37a61db8b04b 291 case 9: // bus on, no control
emperord 2:37a61db8b04b 292 case 0xc: // bus on, no control
emperord 2:37a61db8b04b 293 case 0xd: // bus off, no control
emperord 2:37a61db8b04b 294 cmd[0] = 1; // PCA9541 コマンドコード Cont Reg
emperord 2:37a61db8b04b 295 cmd[1] = 0; // bus on, has control
emperord 2:37a61db8b04b 296 i2c.write( 0xe2, cmd, 2); // Cont Regにcmd[1]を書込み
emperord 2:37a61db8b04b 297 i2c.read( 0xe2, cmd, 1); // Cont Regを読込み
emperord 2:37a61db8b04b 298 break;
emperord 2:37a61db8b04b 299 case 0xa: // bus on, no control
emperord 2:37a61db8b04b 300 case 0xe: // bus off, no control
emperord 2:37a61db8b04b 301 case 0xf: // bus on, has control
emperord 2:37a61db8b04b 302 cmd[0] = 1; // PCA9541 コマンドコード Cont Reg
emperord 2:37a61db8b04b 303 cmd[1] = 1; // bus on, has control
emperord 2:37a61db8b04b 304 i2c.write( 0xe2, cmd, 2); // Cont Regにcmd[1]を書込み
emperord 2:37a61db8b04b 305 i2c.read( 0xe2, cmd, 1); // Cont Regを読込み
emperord 2:37a61db8b04b 306 break;
emperord 2:37a61db8b04b 307 default:
emperord 2:37a61db8b04b 308 break;
emperord 2:37a61db8b04b 309 }
emperord 2:37a61db8b04b 310
emperord 2:37a61db8b04b 311 cmd[0] = sel; // PCA9546 Cont Reg sel channel enabled
emperord 2:37a61db8b04b 312 i2c.write( 0xe8, cmd, 1); // Send command string
emperord 2:37a61db8b04b 313 }
emperord 2:37a61db8b04b 314
emperord 2:37a61db8b04b 315 void get_time(dt_dat *dt) // 日時の取得
emperord 2:37a61db8b04b 316 {
emperord 2:37a61db8b04b 317 cmd[0] = Seconds_100th; // 取得はレジスタSecondsから
emperord 2:37a61db8b04b 318 i2c.write(PCF85263AT_ADDR, cmd, 1); // レジスタの設定
emperord 2:37a61db8b04b 319 i2c.read(PCF85263AT_ADDR, cmd, 8); // SecondsからYearsまで取得
emperord 2:37a61db8b04b 320 cmd[1] &= 0x7f; // 有効なのは下位7ビット
emperord 2:37a61db8b04b 321 dt->s = (cmd[1] >> 4) * 10 + (cmd[1] & 0xf); // BCDの数値化
emperord 2:37a61db8b04b 322 cmd[2] &= 0x7f; // 有効なのは下位7ビット
emperord 2:37a61db8b04b 323 dt->m = (cmd[2] >> 4) * 10 + (cmd[2] & 0xf); // BCDの数値化
emperord 2:37a61db8b04b 324 cmd[3] &= 0x3f; // 有効なのは下位6ビット
emperord 2:37a61db8b04b 325 dt->h = (cmd[3] >> 4) * 10 + (cmd[3] & 0xf); // BCDの数値化
emperord 2:37a61db8b04b 326 cmd[4] &= 0x3f; // 有効なのは下位6ビット
emperord 2:37a61db8b04b 327 dt->d = (cmd[4] >> 4) * 10 + (cmd[4] & 0xf); // BCDの数値化
emperord 2:37a61db8b04b 328 dt->wd = (cmd[5] & 0x3); // BCDの数値化
emperord 2:37a61db8b04b 329 cmd[6] &= 0x1f; // 有効なのは下位5ビット
emperord 2:37a61db8b04b 330 dt->mm = (cmd[6] >> 4) * 10 + (cmd[6] & 0xf); // BCDの数値化
emperord 2:37a61db8b04b 331 dt->y = (cmd[7] >> 4) * 10 + (cmd[7] & 0xf); // BCDの数値化
emperord 2:37a61db8b04b 332 }
emperord 2:37a61db8b04b 333
emperord 2:37a61db8b04b 334 void set_time(dt_dat *dt) // 日時の設定
emperord 2:37a61db8b04b 335 {
emperord 2:37a61db8b04b 336 cmd[0] = Seconds_100th; // 設定はレジスタSeconds_100thから
emperord 2:37a61db8b04b 337 cmd[1] = ((dt->s100th / 10) << 4) + (dt->s100th % 10);// 0.01秒のBCD化
emperord 2:37a61db8b04b 338 cmd[2] = ((dt->s / 10) << 4) + (dt->s % 10) + 0x80; // 秒のBCD化
emperord 2:37a61db8b04b 339 cmd[3] = ((dt->m / 10) << 4) + (dt->m % 10); // 分のBCD化
emperord 2:37a61db8b04b 340 cmd[4] = ((dt->h / 10) << 4) + (dt->h % 10); // 時のBCD化
emperord 2:37a61db8b04b 341 cmd[5] = ((dt->d / 10) << 4) + (dt->d % 10); // 日のBCD化
emperord 2:37a61db8b04b 342 cmd[7] = ((dt->mm / 10) << 4) + (dt->mm % 10); // 月のBCD化
emperord 2:37a61db8b04b 343 dt->y = dt->y - 2000;
emperord 2:37a61db8b04b 344 cmd[8] = ((dt->y / 10) << 4) + (dt->y % 10); // 年のBCD化
emperord 2:37a61db8b04b 345 i2c.write(PCF85263AT_ADDR, cmd, 9); // 日時の設定
emperord 2:37a61db8b04b 346 }
emperord 2:37a61db8b04b 347
emperord 2:37a61db8b04b 348
emperord 2:37a61db8b04b 349
emperord 2:37a61db8b04b 350
emperord 2:37a61db8b04b 351 int * DrawButton(int x, int y, int w, int h){
emperord 2:37a61db8b04b 352 int* pointer;
emperord 2:37a61db8b04b 353 int butttouch[4];
emperord 2:37a61db8b04b 354 pointer = butttouch;
emperord 2:37a61db8b04b 355 lcd.FillRect(x, y, w, h);
emperord 2:37a61db8b04b 356 butttouch[0] = x;
emperord 2:37a61db8b04b 357 butttouch[1] = x+w;
emperord 2:37a61db8b04b 358 butttouch[2] = y;
emperord 2:37a61db8b04b 359 butttouch[3] = y+h;
emperord 2:37a61db8b04b 360 return pointer;
emperord 2:37a61db8b04b 361 }
bcostm 0:9933f7db9a9b 362
emperord 2:37a61db8b04b 363 int * DrawArrow(int x, int y, int d, int s){
emperord 2:37a61db8b04b 364 int* pointer;
emperord 2:37a61db8b04b 365 int arrowtouch[4];
emperord 2:37a61db8b04b 366 pointer = arrowtouch;
emperord 2:37a61db8b04b 367 if (d == 1) {
emperord 2:37a61db8b04b 368 Point points[] = {{x-10*s,y+10*s},{x,y},{x+10*s,y+10*s},{x+2*s,y+10*s},{x+2*s,y+20*s},{x-2*s,y+20*s},{x-2*s,y+10*s}};
emperord 2:37a61db8b04b 369 lcd.FillPolygon(points,7);
emperord 2:37a61db8b04b 370 arrowtouch[0] = x-10*s;
emperord 2:37a61db8b04b 371 arrowtouch[1] = x+10*s;
emperord 2:37a61db8b04b 372 arrowtouch[2] = y;
emperord 2:37a61db8b04b 373 arrowtouch[3] = y+20*s;
emperord 2:37a61db8b04b 374 } else if (d == 2) {
emperord 2:37a61db8b04b 375 Point points[] = {{x+10*s,y-10*s},{x,y},{x-10*s,y-10*s},{x-2*s,y-10*s},{x-2*s,y-20*s},{x+2*s,y-20*s},{x+2*s,y-10*s}};
emperord 2:37a61db8b04b 376 lcd.FillPolygon(points,7);
emperord 2:37a61db8b04b 377 arrowtouch[0] = x-10*s;
emperord 2:37a61db8b04b 378 arrowtouch[1] = x+10*s;
emperord 2:37a61db8b04b 379 arrowtouch[2] = y-20*s;
emperord 2:37a61db8b04b 380 arrowtouch[3] = y;
emperord 2:37a61db8b04b 381 } else if (d == 3) {
emperord 2:37a61db8b04b 382 Point points[] = {{x,y},{x-10*s,y-10*s},{x-10*s,y-2*s},{x-20*s,y-2*s},{x-20*s,y+2*s},{x-10*s,y+2*s},{x-10*s,y+10*s}};
emperord 2:37a61db8b04b 383 lcd.FillPolygon(points,7);
emperord 2:37a61db8b04b 384 arrowtouch[0] = x-10*s;
emperord 2:37a61db8b04b 385 arrowtouch[1] = x+10*s;
emperord 2:37a61db8b04b 386 arrowtouch[2] = y-20*s;
emperord 2:37a61db8b04b 387 arrowtouch[3] = y;
emperord 2:37a61db8b04b 388 } else if (d == 4) {
emperord 2:37a61db8b04b 389 Point points[] = {{x,y},{x+10*s,y+10*s},{x+10*s,y+2*s},{x+20*s,y+2*s},{x+20*s,y-2*s},{x+10*s,y-2*s},{x+10*s,y-10*s}};
emperord 2:37a61db8b04b 390 lcd.FillPolygon(points,7);
emperord 2:37a61db8b04b 391 arrowtouch[0] = x-10*s;
emperord 2:37a61db8b04b 392 arrowtouch[1] = x+10*s;
emperord 2:37a61db8b04b 393 arrowtouch[2] = y-20*s;
emperord 2:37a61db8b04b 394 arrowtouch[3] = y;
emperord 2:37a61db8b04b 395 }
emperord 2:37a61db8b04b 396 return pointer;
emperord 2:37a61db8b04b 397 }
emperord 2:37a61db8b04b 398 void runpump(){
emperord 2:37a61db8b04b 399 if (ManMode == true) {
emperord 2:37a61db8b04b 400 while (1) {
emperord 2:37a61db8b04b 401 //pump1
emperord 2:37a61db8b04b 402 if (p1on == true) {
emperord 2:37a61db8b04b 403 for (int j = 1; j<=p1count; j++) {
emperord 2:37a61db8b04b 404 pump1 = 1;
emperord 2:37a61db8b04b 405 Thread::wait(400);
emperord 2:37a61db8b04b 406 pump1 = 0;
emperord 2:37a61db8b04b 407 Thread::wait(600);
emperord 2:37a61db8b04b 408 }
emperord 2:37a61db8b04b 409 }
emperord 2:37a61db8b04b 410 //pump2
emperord 2:37a61db8b04b 411 if (p2on == true) {
emperord 2:37a61db8b04b 412 for (int j = 1; j<=p2count; j++) {
emperord 2:37a61db8b04b 413 pump2 = 1;
emperord 2:37a61db8b04b 414 Thread::wait(400);
emperord 2:37a61db8b04b 415 pump2 = 0;
emperord 2:37a61db8b04b 416 Thread::wait(600);
emperord 2:37a61db8b04b 417 }
emperord 2:37a61db8b04b 418 }
emperord 2:37a61db8b04b 419 //pump3
emperord 2:37a61db8b04b 420 if (p3on == true) {
emperord 2:37a61db8b04b 421 for (int j = 1; j<=p3count; j++) {
emperord 2:37a61db8b04b 422 pump3 = 1;
emperord 2:37a61db8b04b 423 Thread::wait(400);
emperord 2:37a61db8b04b 424 pump3 = 0;
emperord 2:37a61db8b04b 425 Thread::wait(600);
emperord 2:37a61db8b04b 426 }
emperord 2:37a61db8b04b 427 }
emperord 2:37a61db8b04b 428 /* //pump4
emperord 2:37a61db8b04b 429 if (p4on == true) {
emperord 2:37a61db8b04b 430 for (int j = 1; j<=p4count; j++) {
emperord 2:37a61db8b04b 431 pump4 = 1;
emperord 2:37a61db8b04b 432 Thread::wait(400);
emperord 2:37a61db8b04b 433 pump4 = 0;
emperord 2:37a61db8b04b 434 Thread::wait(600);
emperord 2:37a61db8b04b 435 }
emperord 2:37a61db8b04b 436 } */
emperord 2:37a61db8b04b 437 //Sole5
emperord 2:37a61db8b04b 438 if (p5on == true) {
emperord 2:37a61db8b04b 439 for (int j = 1; j<=p5count; j++) {
emperord 2:37a61db8b04b 440 pump5 = 1;
emperord 2:37a61db8b04b 441 Thread::wait(5000);
emperord 2:37a61db8b04b 442 pump5 = 0;
emperord 2:37a61db8b04b 443 Thread::wait(300);
emperord 2:37a61db8b04b 444 }
emperord 2:37a61db8b04b 445 }
emperord 2:37a61db8b04b 446 //Pump6
emperord 2:37a61db8b04b 447 if (p6on == true) {
emperord 2:37a61db8b04b 448 for (int j = 1; j<=p6count; j++) {
emperord 2:37a61db8b04b 449 pump6 = 1;
emperord 2:37a61db8b04b 450 Thread::wait(100);
emperord 2:37a61db8b04b 451 pump6 = 0;
emperord 2:37a61db8b04b 452 Thread::wait(100);
emperord 2:37a61db8b04b 453 }
emperord 2:37a61db8b04b 454 }
emperord 2:37a61db8b04b 455 //Pump7
emperord 2:37a61db8b04b 456 if (p7on == true) {
emperord 2:37a61db8b04b 457 for (int j = 1; j<=p7count; j++) {
emperord 2:37a61db8b04b 458 motors[1]->move(StepperMotor::BWD, STEPS_1*6.15);
emperord 2:37a61db8b04b 459 //motors[1]->wait_while_active();
emperord 2:37a61db8b04b 460 Thread::wait(300);
emperord 2:37a61db8b04b 461 }
emperord 2:37a61db8b04b 462 }
emperord 2:37a61db8b04b 463 Thread::wait(2000);
emperord 2:37a61db8b04b 464 }
bcostm 0:9933f7db9a9b 465 } else {
emperord 2:37a61db8b04b 466 //pump1
emperord 2:37a61db8b04b 467 if (p1on == true) {
emperord 2:37a61db8b04b 468 for (int j = 1; j<=p1count; j++) {
emperord 2:37a61db8b04b 469 pump1 = 1;
emperord 2:37a61db8b04b 470 Thread::wait(400);
emperord 2:37a61db8b04b 471 pump1 = 0;
emperord 2:37a61db8b04b 472 Thread::wait(600);
emperord 2:37a61db8b04b 473 }
emperord 2:37a61db8b04b 474 }
emperord 2:37a61db8b04b 475 //pump2
emperord 2:37a61db8b04b 476 if (p2on == true) {
emperord 2:37a61db8b04b 477 for (int j = 1; j<=p2count; j++) {
emperord 2:37a61db8b04b 478 pump2 = 1;
emperord 2:37a61db8b04b 479 Thread::wait(400);
emperord 2:37a61db8b04b 480 pump2 = 0;
emperord 2:37a61db8b04b 481 Thread::wait(600);
emperord 2:37a61db8b04b 482 }
emperord 2:37a61db8b04b 483 }
emperord 2:37a61db8b04b 484 //pump3
emperord 2:37a61db8b04b 485 if (p3on == true) {
emperord 2:37a61db8b04b 486 for (int j = 1; j<=p3count; j++) {
emperord 2:37a61db8b04b 487 pump3 = 1;
emperord 2:37a61db8b04b 488 Thread::wait(400);
emperord 2:37a61db8b04b 489 pump3 = 0;
emperord 2:37a61db8b04b 490 Thread::wait(600);
emperord 2:37a61db8b04b 491 }
emperord 2:37a61db8b04b 492 }
emperord 2:37a61db8b04b 493 /* //pump4
emperord 2:37a61db8b04b 494 if (p4on == true) {
emperord 2:37a61db8b04b 495 for (int j = 1; j<=p4count; j++) {
emperord 2:37a61db8b04b 496 pump4 = 1;
emperord 2:37a61db8b04b 497 Thread::wait(400);
emperord 2:37a61db8b04b 498 pump4 = 0;
emperord 2:37a61db8b04b 499 Thread::wait(600);
emperord 2:37a61db8b04b 500 }
emperord 2:37a61db8b04b 501 } */
emperord 2:37a61db8b04b 502 //Sole5
emperord 2:37a61db8b04b 503 if (p5on == true) {
emperord 2:37a61db8b04b 504 for (int j = 1; j<=p5count; j++) {
emperord 2:37a61db8b04b 505 pump5 = 1;
emperord 2:37a61db8b04b 506 Thread::wait(5000);
emperord 2:37a61db8b04b 507 //Wash cycle will go here
emperord 2:37a61db8b04b 508 pump5 = 0;
emperord 2:37a61db8b04b 509 Thread::wait(300);
emperord 2:37a61db8b04b 510 }
emperord 2:37a61db8b04b 511 }
emperord 2:37a61db8b04b 512 //Pump6
emperord 2:37a61db8b04b 513 if (p6on == true) {
emperord 2:37a61db8b04b 514 for (int j = 1; j<=p6count; j++) {
emperord 2:37a61db8b04b 515 pump6 = 1;
emperord 2:37a61db8b04b 516 Thread::wait(100);
emperord 2:37a61db8b04b 517 pump6 = 0;
emperord 2:37a61db8b04b 518 Thread::wait(100);
emperord 2:37a61db8b04b 519 }
emperord 2:37a61db8b04b 520 }
emperord 2:37a61db8b04b 521 //Pump7
emperord 2:37a61db8b04b 522 if (p7on == true) {
emperord 2:37a61db8b04b 523 for (int j = 1; j<=p7count; j++) {
emperord 2:37a61db8b04b 524 motors[1]->move(StepperMotor::BWD, STEPS_1*6.15);
emperord 2:37a61db8b04b 525 //motors[1]->wait_while_active();
emperord 2:37a61db8b04b 526 Thread::wait(4000);
emperord 2:37a61db8b04b 527 }
emperord 2:37a61db8b04b 528 }
emperord 2:37a61db8b04b 529
bcostm 0:9933f7db9a9b 530 }
bcostm 0:9933f7db9a9b 531
emperord 2:37a61db8b04b 532 }
emperord 2:37a61db8b04b 533 void fill() {
emperord 2:37a61db8b04b 534 if (MODE != 6) { MODE = 5; }
emperord 2:37a61db8b04b 535 p1on = false;
emperord 2:37a61db8b04b 536 p2on = false;
emperord 2:37a61db8b04b 537 p3on = false;
emperord 2:37a61db8b04b 538 p4on = false;
emperord 2:37a61db8b04b 539 p5on = false;
emperord 2:37a61db8b04b 540 p6on = false;
emperord 2:37a61db8b04b 541 p7on = true;
emperord 2:37a61db8b04b 542 runpump();
emperord 2:37a61db8b04b 543 if (MODE != 6) { MODE = 4; }
emperord 2:37a61db8b04b 544 }
emperord 2:37a61db8b04b 545 void drain() {
emperord 2:37a61db8b04b 546 p1on = false;
emperord 2:37a61db8b04b 547 p2on = false;
emperord 2:37a61db8b04b 548 p3on = false;
emperord 2:37a61db8b04b 549 p4on = false;
emperord 2:37a61db8b04b 550 p5on = true;
emperord 2:37a61db8b04b 551 p6on = false;
emperord 2:37a61db8b04b 552 p7on = false;
emperord 2:37a61db8b04b 553 runpump();
emperord 2:37a61db8b04b 554 }
emperord 2:37a61db8b04b 555 void wash() {
emperord 2:37a61db8b04b 556 MODE = 6;
emperord 2:37a61db8b04b 557 pump5 = 1;
emperord 2:37a61db8b04b 558 motors[1]->move(StepperMotor::BWD, STEPS_1*18.45);
emperord 2:37a61db8b04b 559 Thread::wait(4000);
emperord 2:37a61db8b04b 560 //motors[1]->wait_while_active();
emperord 2:37a61db8b04b 561 pump5 = 0;
emperord 2:37a61db8b04b 562 motors[1]->move(StepperMotor::BWD, STEPS_1*18.45);
emperord 2:37a61db8b04b 563 Thread::wait(4000);
emperord 2:37a61db8b04b 564 //motors[1]->wait_while_active();
emperord 2:37a61db8b04b 565 pump5 = 1;
emperord 2:37a61db8b04b 566 Thread::wait(3000);
emperord 2:37a61db8b04b 567 pump5 = 0;
emperord 2:37a61db8b04b 568 MODE = 4;
emperord 2:37a61db8b04b 569 /* drain();
emperord 2:37a61db8b04b 570 Thread::wait(100);
emperord 2:37a61db8b04b 571 fill();
emperord 2:37a61db8b04b 572 Thread::wait(100);
emperord 2:37a61db8b04b 573 drain();
emperord 2:37a61db8b04b 574 Thread::wait(100) ;
emperord 2:37a61db8b04b 575 fill();
emperord 2:37a61db8b04b 576 Thread::wait(100);
emperord 2:37a61db8b04b 577 drain();
emperord 2:37a61db8b04b 578 Thread::wait(100) ;
emperord 2:37a61db8b04b 579 fill();
emperord 2:37a61db8b04b 580 Thread::wait(100);
emperord 2:37a61db8b04b 581 drain();
emperord 2:37a61db8b04b 582 Thread::wait(100);
emperord 2:37a61db8b04b 583 fill();
emperord 2:37a61db8b04b 584 Thread::wait(100);
emperord 2:37a61db8b04b 585 fill();
emperord 2:37a61db8b04b 586 Thread::wait(100);
emperord 2:37a61db8b04b 587 fill();
emperord 2:37a61db8b04b 588 Thread::wait(100);
emperord 2:37a61db8b04b 589 drain();
emperord 2:37a61db8b04b 590 Thread::wait(100);
emperord 2:37a61db8b04b 591 MODE = 4; */
emperord 2:37a61db8b04b 592 }
emperord 2:37a61db8b04b 593 void mix() {
emperord 2:37a61db8b04b 594 MODE = 7;
emperord 2:37a61db8b04b 595 p1on = false;
emperord 2:37a61db8b04b 596 p2on = false;
emperord 2:37a61db8b04b 597 p3on = false;
emperord 2:37a61db8b04b 598 p4on = false;
emperord 2:37a61db8b04b 599 p5on = false;
emperord 2:37a61db8b04b 600 p6on = true;
emperord 2:37a61db8b04b 601 p7on = false;
emperord 2:37a61db8b04b 602 runpump();
emperord 2:37a61db8b04b 603 Thread::wait(1000);
emperord 2:37a61db8b04b 604 MODE = 4;
emperord 2:37a61db8b04b 605
emperord 2:37a61db8b04b 606 }
emperord 2:37a61db8b04b 607 void Agbuffer() {
emperord 2:37a61db8b04b 608 MODE = 8;
emperord 2:37a61db8b04b 609 p1on = true;
emperord 2:37a61db8b04b 610 p2on = false;
emperord 2:37a61db8b04b 611 p3on = false;
emperord 2:37a61db8b04b 612 p4on = false;
emperord 2:37a61db8b04b 613 p5on = false;
emperord 2:37a61db8b04b 614 p6on = false;
emperord 2:37a61db8b04b 615 p7on = false;
emperord 2:37a61db8b04b 616 runpump();
emperord 2:37a61db8b04b 617 MODE = 4;
emperord 2:37a61db8b04b 618 }
emperord 2:37a61db8b04b 619 void Agindicator() {
emperord 2:37a61db8b04b 620 MODE = 9;
emperord 2:37a61db8b04b 621 p1on = false;
emperord 2:37a61db8b04b 622 p2on = true;
emperord 2:37a61db8b04b 623 p3on = false;
emperord 2:37a61db8b04b 624 p4on = false;
emperord 2:37a61db8b04b 625 p5on = false;
emperord 2:37a61db8b04b 626 p6on = false;
emperord 2:37a61db8b04b 627 p7on = false;
emperord 2:37a61db8b04b 628 runpump();
emperord 2:37a61db8b04b 629 MODE = 4;
emperord 2:37a61db8b04b 630 }
emperord 2:37a61db8b04b 631 void CuIndicator() {
emperord 2:37a61db8b04b 632 MODE = 10;
emperord 2:37a61db8b04b 633 p1on = false;
emperord 2:37a61db8b04b 634 p2on = false;
emperord 2:37a61db8b04b 635 p3on = true;
emperord 2:37a61db8b04b 636 p4on = false;
emperord 2:37a61db8b04b 637 p5on = false;
emperord 2:37a61db8b04b 638 p6on = false;
emperord 2:37a61db8b04b 639 p7on = false;
emperord 2:37a61db8b04b 640 runpump();
emperord 2:37a61db8b04b 641 MODE = 4;
emperord 2:37a61db8b04b 642 }
emperord 2:37a61db8b04b 643 void ClSoln() {
emperord 2:37a61db8b04b 644 MODE = 11;
emperord 2:37a61db8b04b 645 p1on = false;
emperord 2:37a61db8b04b 646 p2on = false;
emperord 2:37a61db8b04b 647 p3on = false;
emperord 2:37a61db8b04b 648 p4on = true;
emperord 2:37a61db8b04b 649 p5on = false;
emperord 2:37a61db8b04b 650 p6on = false;
emperord 2:37a61db8b04b 651 p7on = false;
emperord 2:37a61db8b04b 652 runpump();
emperord 2:37a61db8b04b 653 MODE = 4;
emperord 2:37a61db8b04b 654 }
emperord 2:37a61db8b04b 655 unsigned int read() {
emperord 2:37a61db8b04b 656 spi.format(8,0);
emperord 2:37a61db8b04b 657 cs = 0;
emperord 2:37a61db8b04b 658 Thread::wait(200);
emperord 2:37a61db8b04b 659 for( int i = 3; i >= 0; i-- ) {
emperord 2:37a61db8b04b 660 adc.byte[i] = spi.write( 0xFF );
emperord 2:37a61db8b04b 661 }
emperord 2:37a61db8b04b 662 cs = 1;
emperord 2:37a61db8b04b 663
emperord 2:37a61db8b04b 664 return adc.reading;
emperord 2:37a61db8b04b 665
emperord 2:37a61db8b04b 666 }
emperord 2:37a61db8b04b 667 unsigned int readtemp() {
emperord 2:37a61db8b04b 668 spi.format(8,0);
emperord 2:37a61db8b04b 669 Tempcs = 0;
emperord 2:37a61db8b04b 670 Thread::wait(200);
emperord 2:37a61db8b04b 671 for( int i = 3; i >= 0; i-- ) {
emperord 2:37a61db8b04b 672 adc.byte[i] = spi.write( 0xFF );
emperord 2:37a61db8b04b 673 }
emperord 2:37a61db8b04b 674 Tempcs = 1;
emperord 2:37a61db8b04b 675
emperord 2:37a61db8b04b 676 return adc.reading;
emperord 2:37a61db8b04b 677
emperord 2:37a61db8b04b 678 }
emperord 2:37a61db8b04b 679 unsigned int readl(int take) {
emperord 2:37a61db8b04b 680 LED515.write(0.0);
emperord 2:37a61db8b04b 681 LED480.write(0.0);
emperord 2:37a61db8b04b 682 LEDLD = 0;
emperord 2:37a61db8b04b 683 LEDBL = 0;
emperord 2:37a61db8b04b 684 unsigned int res = 1;
emperord 2:37a61db8b04b 685 unsigned int resp = 0;
emperord 2:37a61db8b04b 686 if (take == 0) {
emperord 2:37a61db8b04b 687 MODE = 0;
emperord 2:37a61db8b04b 688 LEDCUR=0.0;
emperord 2:37a61db8b04b 689 Thread::wait(2000);
emperord 2:37a61db8b04b 690 while (resp < res) {
emperord 2:37a61db8b04b 691 resp = read();
emperord 2:37a61db8b04b 692 res = read();
emperord 2:37a61db8b04b 693 }
emperord 2:37a61db8b04b 694 Thread::wait(2000);
emperord 2:37a61db8b04b 695 unsigned int DF = read();
emperord 2:37a61db8b04b 696 unsigned int basereading = 0;
emperord 2:37a61db8b04b 697 double i = 0.0;
emperord 2:37a61db8b04b 698 while (basereading <= DF) {
emperord 2:37a61db8b04b 699 i = i + 0.001;
emperord 2:37a61db8b04b 700 LED515.write(i);
emperord 2:37a61db8b04b 701 res = 1;
emperord 2:37a61db8b04b 702 resp = 0;
emperord 2:37a61db8b04b 703 while (resp < res) {
emperord 2:37a61db8b04b 704 resp = read();
emperord 2:37a61db8b04b 705 res = read();
emperord 2:37a61db8b04b 706 }
emperord 2:37a61db8b04b 707 basereading = read();
emperord 2:37a61db8b04b 708 }
emperord 2:37a61db8b04b 709 LEDCUR = i + 0.001f;
emperord 2:37a61db8b04b 710 LED515.write(i + 0.001f);
emperord 2:37a61db8b04b 711 Thread::wait(2000);
emperord 2:37a61db8b04b 712 while (resp < res) {
emperord 2:37a61db8b04b 713 resp = read();
emperord 2:37a61db8b04b 714 res = read();
emperord 2:37a61db8b04b 715 }
emperord 2:37a61db8b04b 716 res = read();
emperord 2:37a61db8b04b 717 MODE = 4;
emperord 2:37a61db8b04b 718 pc.printf("DARK: %d LEDCUR: %f\r\n", res, LEDCUR);
emperord 2:37a61db8b04b 719
emperord 2:37a61db8b04b 720 }
emperord 2:37a61db8b04b 721 if (take == 1) {
emperord 2:37a61db8b04b 722 MODE = 1;
emperord 2:37a61db8b04b 723 LED515.write(LEDCUR);
emperord 2:37a61db8b04b 724 while (read() <= 12000000) {
emperord 2:37a61db8b04b 725 LEDCUR = LEDCUR + 0.001f;
emperord 2:37a61db8b04b 726 LED515.write(LEDCUR);
emperord 2:37a61db8b04b 727 }
emperord 2:37a61db8b04b 728 Thread::wait(2000);
emperord 2:37a61db8b04b 729 while (resp < res) {
emperord 2:37a61db8b04b 730 resp = read();
emperord 2:37a61db8b04b 731 res = read();
emperord 2:37a61db8b04b 732 }
emperord 2:37a61db8b04b 733 res = read();
emperord 2:37a61db8b04b 734 MODE = 4;
emperord 2:37a61db8b04b 735 pc.printf("ZERO: %d\r\n", res);
emperord 2:37a61db8b04b 736 }
emperord 2:37a61db8b04b 737 if (take == 2) {
emperord 2:37a61db8b04b 738 MODE = 2;
emperord 2:37a61db8b04b 739 LED515.write(LEDCUR);
emperord 2:37a61db8b04b 740 Thread::wait(2000);
emperord 2:37a61db8b04b 741 while (resp < res) {
emperord 2:37a61db8b04b 742 resp = read();
emperord 2:37a61db8b04b 743 res = read();
emperord 2:37a61db8b04b 744 }
emperord 2:37a61db8b04b 745 res = read();
emperord 2:37a61db8b04b 746 MODE = 4;
emperord 2:37a61db8b04b 747 pc.printf("READ: %d\r\n", res);
emperord 2:37a61db8b04b 748 }
emperord 2:37a61db8b04b 749 if (take == 3) {
emperord 2:37a61db8b04b 750 MODE = 12;
emperord 2:37a61db8b04b 751 LEDLD=1;
emperord 2:37a61db8b04b 752 Thread::wait(2000);
emperord 2:37a61db8b04b 753 while (resp < res) {
emperord 2:37a61db8b04b 754 resp = read();
emperord 2:37a61db8b04b 755 res = read();
emperord 2:37a61db8b04b 756 }
emperord 2:37a61db8b04b 757 res = read();
emperord 2:37a61db8b04b 758 LEDLD=0;
emperord 2:37a61db8b04b 759 MODE = 4;
emperord 2:37a61db8b04b 760 pc.printf("Level: %d\r\n", res);
emperord 2:37a61db8b04b 761 }
emperord 2:37a61db8b04b 762
emperord 2:37a61db8b04b 763
emperord 2:37a61db8b04b 764 ///
emperord 2:37a61db8b04b 765 if (take == 4) {
emperord 2:37a61db8b04b 766 MODE = 0;
emperord 2:37a61db8b04b 767 LEDCUR=0.0;
emperord 2:37a61db8b04b 768 Thread::wait(2000);
emperord 2:37a61db8b04b 769 while (resp < res) {
emperord 2:37a61db8b04b 770 resp = read();
emperord 2:37a61db8b04b 771 res = read();
emperord 2:37a61db8b04b 772 }
emperord 2:37a61db8b04b 773 Thread::wait(2000);
emperord 2:37a61db8b04b 774 unsigned int DF = read();
emperord 2:37a61db8b04b 775 unsigned int basereading = 0;
emperord 2:37a61db8b04b 776 double i = 0.0;
emperord 2:37a61db8b04b 777 while (basereading <= DF) {
emperord 2:37a61db8b04b 778 i = i + 0.001;
emperord 2:37a61db8b04b 779 LED480.write(i);
emperord 2:37a61db8b04b 780 res = 1;
emperord 2:37a61db8b04b 781 resp = 0;
emperord 2:37a61db8b04b 782 while (resp < res) {
emperord 2:37a61db8b04b 783 resp = read();
emperord 2:37a61db8b04b 784 res = read();
emperord 2:37a61db8b04b 785 }
emperord 2:37a61db8b04b 786 basereading = read();
emperord 2:37a61db8b04b 787 }
emperord 2:37a61db8b04b 788 LEDCUR = i + 0.001f;
emperord 2:37a61db8b04b 789 LED480.write(i + 0.001f);
emperord 2:37a61db8b04b 790 Thread::wait(2000);
emperord 2:37a61db8b04b 791 while (resp < res) {
emperord 2:37a61db8b04b 792 resp = read();
emperord 2:37a61db8b04b 793 res = read();
emperord 2:37a61db8b04b 794 }
emperord 2:37a61db8b04b 795 res = read();
emperord 2:37a61db8b04b 796 LED480.write(0.0);
emperord 2:37a61db8b04b 797 MODE = 4;
emperord 2:37a61db8b04b 798 pc.printf("DARK: %d LEDCUR: %f\r\n", res, LEDCUR);
emperord 2:37a61db8b04b 799
emperord 2:37a61db8b04b 800 }
emperord 2:37a61db8b04b 801 if (take == 5) {
emperord 2:37a61db8b04b 802 MODE = 1;
emperord 2:37a61db8b04b 803 LED480.write(LEDCUR);
emperord 2:37a61db8b04b 804 while (read() <= 12000000) {
emperord 2:37a61db8b04b 805 LEDCUR = LEDCUR + 0.001f;
emperord 2:37a61db8b04b 806 LED480.write(LEDCUR);
emperord 2:37a61db8b04b 807 }
emperord 2:37a61db8b04b 808 Thread::wait(2000);
emperord 2:37a61db8b04b 809 while (resp < res) {
emperord 2:37a61db8b04b 810 resp = read();
emperord 2:37a61db8b04b 811 res = read();
emperord 2:37a61db8b04b 812 }
emperord 2:37a61db8b04b 813 res = read();
emperord 2:37a61db8b04b 814 LED480.write(0.0);
emperord 2:37a61db8b04b 815 MODE = 4;
emperord 2:37a61db8b04b 816 pc.printf("ZERO: %d\r\n", res);
emperord 2:37a61db8b04b 817 }
emperord 2:37a61db8b04b 818 if (take == 6) {
emperord 2:37a61db8b04b 819 MODE = 2;
emperord 2:37a61db8b04b 820 LED480.write(LEDCUR);
emperord 2:37a61db8b04b 821 Thread::wait(2000);
emperord 2:37a61db8b04b 822 while (resp < res) {
emperord 2:37a61db8b04b 823 resp = read();
emperord 2:37a61db8b04b 824 res = read();
emperord 2:37a61db8b04b 825 }
emperord 2:37a61db8b04b 826 res = read();
emperord 2:37a61db8b04b 827 LED480.write(0.0);
emperord 2:37a61db8b04b 828 MODE = 4;
emperord 2:37a61db8b04b 829 pc.printf("READ: %d\r\n", res);
emperord 2:37a61db8b04b 830 }
emperord 2:37a61db8b04b 831 ///
emperord 2:37a61db8b04b 832 LEDBL=1;
emperord 2:37a61db8b04b 833 return res;
emperord 2:37a61db8b04b 834 }
emperord 2:37a61db8b04b 835
emperord 2:37a61db8b04b 836 void saveit() {
emperord 2:37a61db8b04b 837 Thread::wait(200);
emperord 2:37a61db8b04b 838 get_time(&dt);
emperord 2:37a61db8b04b 839 Thread::wait(200);
emperord 2:37a61db8b04b 840 memset((char*)savereading,0,sizeof(savereading));
emperord 2:37a61db8b04b 841 Thread::wait(1000);
emperord 2:37a61db8b04b 842 sprintf((char*)savereading, "%04d/%02d/%02d %02d:%02d:%02d,%0.1f,%0.5f,%0.1f,%0.5f,%0.5f,%0.5f,%0.5f\n", 2000 + dt.y, dt.mm, dt.d, dt.h, dt.m, dt.s, Silver, SilverRAW, Copper, CopperRAW, ((double)DARK/16777216)*3.302, ((double)ZERO/16777216)*3.302, ((double)READ/16777216)*3.302);
emperord 2:37a61db8b04b 843 Thread::wait(1000);
emperord 2:37a61db8b04b 844
emperord 2:37a61db8b04b 845 ress = f_open(&MyFile, "Log.csv", FA_WRITE);
emperord 2:37a61db8b04b 846 Thread::wait(200);
emperord 2:37a61db8b04b 847 if(ress!= FR_OK) {
emperord 2:37a61db8b04b 848 pc.printf("Failed to open file\n");
emperord 2:37a61db8b04b 849 ress = f_open(&MyFile, "Log.csv", FA_CREATE_ALWAYS);
emperord 2:37a61db8b04b 850 if(ress!= FR_OK) {
emperord 2:37a61db8b04b 851 pc.printf("Failed to open file\n");
emperord 2:37a61db8b04b 852 }
emperord 2:37a61db8b04b 853 }
emperord 2:37a61db8b04b 854 Thread::wait(200);
emperord 2:37a61db8b04b 855 f_lseek(&MyFile, f_size(&MyFile));
emperord 2:37a61db8b04b 856 Thread::wait(200);
emperord 2:37a61db8b04b 857 ress = f_write(&MyFile, savereading, sizeof(savereading), &bytesread);
emperord 2:37a61db8b04b 858 Thread::wait(200);
emperord 2:37a61db8b04b 859 if(ress!= FR_OK) {
emperord 2:37a61db8b04b 860 pc.printf("Failed to write file 1\n");
emperord 2:37a61db8b04b 861 MODE = 13;
emperord 2:37a61db8b04b 862 writefail = 1;
emperord 2:37a61db8b04b 863 Thread::wait(3000);
emperord 2:37a61db8b04b 864 } else {
emperord 2:37a61db8b04b 865 pc.printf("Done!\n");
emperord 2:37a61db8b04b 866 MODE = 11;
emperord 2:37a61db8b04b 867 writefail = 0;
emperord 2:37a61db8b04b 868 }
emperord 2:37a61db8b04b 869 Thread::wait(200);
emperord 2:37a61db8b04b 870 f_close(&MyFile);
emperord 2:37a61db8b04b 871 /* Thread::wait(200);
emperord 2:37a61db8b04b 872 FATFS_UnLinkDriver(SDPath); */
emperord 2:37a61db8b04b 873 }
emperord 2:37a61db8b04b 874
emperord 2:37a61db8b04b 875 void ReadSilver() {
emperord 2:37a61db8b04b 876 sprintf((char*)cyclestep, " - Ag");
emperord 2:37a61db8b04b 877 wash();
emperord 2:37a61db8b04b 878 //Thread::wait(30000); //to give heater time to warm water
emperord 2:37a61db8b04b 879 LVL = readl(3);
emperord 2:37a61db8b04b 880 while (LVL > 9000000) {
emperord 2:37a61db8b04b 881 fill();
emperord 2:37a61db8b04b 882 LVL = readl(3);
emperord 2:37a61db8b04b 883 }
emperord 2:37a61db8b04b 884 Thread::wait(2000);
emperord 2:37a61db8b04b 885 DARK = readl(0);
emperord 2:37a61db8b04b 886 Thread::wait(2000);
emperord 2:37a61db8b04b 887 ZERO = readl(1);
emperord 2:37a61db8b04b 888 Agbuffer();
emperord 2:37a61db8b04b 889 mix();
emperord 2:37a61db8b04b 890 Agindicator();
emperord 2:37a61db8b04b 891 mix();
emperord 2:37a61db8b04b 892 Thread::wait(60000);
emperord 2:37a61db8b04b 893 sprintf((char*)cyclestep, " - Ag");
emperord 2:37a61db8b04b 894 READ = readl(2);
emperord 2:37a61db8b04b 895 double x = abs(((float)READ-(float)DARK)/((float)ZERO-(float)DARK));
emperord 2:37a61db8b04b 896 x = 2-log10(x*100);
emperord 2:37a61db8b04b 897 RAW = x;
emperord 2:37a61db8b04b 898 SilverRAW = RAW;
emperord 2:37a61db8b04b 899 //y = 10726x^2 – 301.98x – 5.1693
emperord 2:37a61db8b04b 900 x = 10726*pow(x,2) - 301.98*x - 5.1693;
emperord 2:37a61db8b04b 901 if (x<0.0){ x=0.0;}
emperord 2:37a61db8b04b 902 Silver = x;
emperord 2:37a61db8b04b 903 sprintf((char*)cyclestep, "");
emperord 2:37a61db8b04b 904 saveit();
emperord 2:37a61db8b04b 905 }
emperord 2:37a61db8b04b 906 void ReadCopper() {
emperord 2:37a61db8b04b 907 sprintf((char*)cyclestep, " - Cu");
emperord 2:37a61db8b04b 908 wash();
emperord 2:37a61db8b04b 909 //Thread::wait(30000); //to give heater time to warm water
emperord 2:37a61db8b04b 910 LVL = readl(3);
emperord 2:37a61db8b04b 911 while (LVL > 9000000) {
emperord 2:37a61db8b04b 912 fill();
emperord 2:37a61db8b04b 913 LVL = readl(3);
emperord 2:37a61db8b04b 914 }
emperord 2:37a61db8b04b 915 Thread::wait(2000);
emperord 2:37a61db8b04b 916 DARK = readl(4);
emperord 2:37a61db8b04b 917 Thread::wait(2000);
emperord 2:37a61db8b04b 918 ZERO = readl(5);
emperord 2:37a61db8b04b 919 CuIndicator();
emperord 2:37a61db8b04b 920 mix();
emperord 2:37a61db8b04b 921 Thread::wait(60000);
emperord 2:37a61db8b04b 922 sprintf((char*)cyclestep, " - Cu");
emperord 2:37a61db8b04b 923 READ = readl(6);
emperord 2:37a61db8b04b 924 double x = abs(((float)READ-(float)DARK)/((float)ZERO-(float)DARK));
emperord 2:37a61db8b04b 925 x = 2-log10(x*100);
emperord 2:37a61db8b04b 926 RAW = x;
emperord 2:37a61db8b04b 927 CopperRAW = RAW;
emperord 2:37a61db8b04b 928 //y = 4852.2x – 9.5947
emperord 2:37a61db8b04b 929 x = 4852.2*x - 9.5947;
emperord 2:37a61db8b04b 930 if (x<0.0){ x=0.0;}
emperord 2:37a61db8b04b 931 Copper = x;
emperord 2:37a61db8b04b 932 sprintf((char*)cyclestep, "");
emperord 2:37a61db8b04b 933 saveit();
emperord 2:37a61db8b04b 934 }
emperord 2:37a61db8b04b 935 void ThermoStat() {
emperord 2:37a61db8b04b 936 TempCurrent = ((readtemp()/16777216.0) - 0.3756) * 660;
emperord 2:37a61db8b04b 937 pc.printf("%0.2f",TempCurrent);
emperord 2:37a61db8b04b 938 if (TempCurrent >= 41.0) { Heat = 0;}
emperord 2:37a61db8b04b 939 if (TempCurrent < 38.0) { Heat = 1;}
emperord 2:37a61db8b04b 940 }
emperord 2:37a61db8b04b 941 void reprime();
emperord 2:37a61db8b04b 942 void takereading() {
emperord 2:37a61db8b04b 943 while (1) {
emperord 2:37a61db8b04b 944 LED515.write(0.0);
emperord 2:37a61db8b04b 945 LED480.write(0.0);
emperord 2:37a61db8b04b 946 LEDLD = 0;
emperord 2:37a61db8b04b 947 LEDBL = 0;
emperord 2:37a61db8b04b 948 LEDCUR = 0.0;
emperord 2:37a61db8b04b 949 if (ManMode == true) {
emperord 2:37a61db8b04b 950 DARK = readl(0);
emperord 2:37a61db8b04b 951 ZERO = readl(1);
emperord 2:37a61db8b04b 952 Thread::wait(5000);
emperord 2:37a61db8b04b 953 READ = readl(2);
emperord 2:37a61db8b04b 954 double x = abs(((float)READ-(float)DARK)/((float)ZERO-(float)DARK));
emperord 2:37a61db8b04b 955 x = 2-log10(x*100);
emperord 2:37a61db8b04b 956 //x = 10.297*pow(x,2) - 21.909*x + 11.453;
emperord 2:37a61db8b04b 957 if (x < 0.0) { x = 0.0; }
emperord 2:37a61db8b04b 958 Copper = x;
emperord 2:37a61db8b04b 959 Silver = x;
emperord 2:37a61db8b04b 960 }
emperord 2:37a61db8b04b 961 if (ManMode == false) {
emperord 2:37a61db8b04b 962 ThermoStat();
emperord 2:37a61db8b04b 963 if (AgMODE == true) { ReadSilver(); }
emperord 2:37a61db8b04b 964 if (CuMODE == true) { ReadCopper(); }
emperord 2:37a61db8b04b 965 drain();
emperord 2:37a61db8b04b 966 for (int d6chld = 0; d6chld < d6count*56; d6chld++){
emperord 2:37a61db8b04b 967 Thread::wait(60000);
emperord 2:37a61db8b04b 968 }
emperord 2:37a61db8b04b 969 if (d6count > 0) { reprime(); }
emperord 2:37a61db8b04b 970 }
emperord 2:37a61db8b04b 971 }
emperord 2:37a61db8b04b 972 }
emperord 2:37a61db8b04b 973
emperord 2:37a61db8b04b 974 void prime(){
emperord 2:37a61db8b04b 975 MODE = 3;
emperord 2:37a61db8b04b 976 thread3.terminate();
emperord 2:37a61db8b04b 977 pump5 = 1;
emperord 2:37a61db8b04b 978 for (pcount = 0; pcount < 25; pcount++) {
emperord 2:37a61db8b04b 979
emperord 2:37a61db8b04b 980 pump1 = 1;
emperord 2:37a61db8b04b 981 Thread::wait(200);
emperord 2:37a61db8b04b 982 pump1 = 0;
emperord 2:37a61db8b04b 983
emperord 2:37a61db8b04b 984 pump2 = 1;
emperord 2:37a61db8b04b 985 Thread::wait(200);
emperord 2:37a61db8b04b 986 pump2 = 0;
emperord 2:37a61db8b04b 987
emperord 2:37a61db8b04b 988 pump3 = 1;
emperord 2:37a61db8b04b 989 Thread::wait(200);
emperord 2:37a61db8b04b 990 pump3 = 0;
emperord 2:37a61db8b04b 991
emperord 2:37a61db8b04b 992 /* pump4 = 1;
emperord 2:37a61db8b04b 993 Thread::wait(200);
emperord 2:37a61db8b04b 994 pump4 = 0; */
emperord 2:37a61db8b04b 995
emperord 2:37a61db8b04b 996 pump6 = 1;
emperord 2:37a61db8b04b 997 Thread::wait(200);
emperord 2:37a61db8b04b 998 pump6 = 0;
emperord 2:37a61db8b04b 999
emperord 2:37a61db8b04b 1000 motors[1]->move(StepperMotor::BWD, STEPS_1*6.15);
emperord 2:37a61db8b04b 1001 //motors[1]->wait_while_active();
emperord 2:37a61db8b04b 1002
emperord 2:37a61db8b04b 1003
emperord 2:37a61db8b04b 1004 }
emperord 2:37a61db8b04b 1005 Thread::wait(5000);
emperord 2:37a61db8b04b 1006 pump5 = 0;
emperord 2:37a61db8b04b 1007 Thread::wait(300);
emperord 2:37a61db8b04b 1008 if (ManMode == true) { thread2.start(runpump); }
emperord 2:37a61db8b04b 1009 thread3.start(takereading);
emperord 2:37a61db8b04b 1010 pcount = 0;
emperord 2:37a61db8b04b 1011 MODE = 4;
emperord 2:37a61db8b04b 1012 }
emperord 2:37a61db8b04b 1013
emperord 2:37a61db8b04b 1014 void reprime(){
emperord 2:37a61db8b04b 1015 MODE = 3;
emperord 2:37a61db8b04b 1016 pump5 = 1;
emperord 2:37a61db8b04b 1017 for (pcount = 0; pcount < 5; pcount++) {
emperord 2:37a61db8b04b 1018
emperord 2:37a61db8b04b 1019 pump1 = 1;
emperord 2:37a61db8b04b 1020 Thread::wait(200);
emperord 2:37a61db8b04b 1021 pump1 = 0;
emperord 2:37a61db8b04b 1022
emperord 2:37a61db8b04b 1023 pump2 = 1;
emperord 2:37a61db8b04b 1024 Thread::wait(200);
emperord 2:37a61db8b04b 1025 pump2 = 0;
bcostm 0:9933f7db9a9b 1026
emperord 2:37a61db8b04b 1027 pump3 = 1;
emperord 2:37a61db8b04b 1028 Thread::wait(200);
emperord 2:37a61db8b04b 1029 pump3 = 0;
emperord 2:37a61db8b04b 1030
emperord 2:37a61db8b04b 1031 /* pump4 = 1;
emperord 2:37a61db8b04b 1032 Thread::wait(200);
emperord 2:37a61db8b04b 1033 pump4 = 0; */
emperord 2:37a61db8b04b 1034
emperord 2:37a61db8b04b 1035 pump6 = 1;
emperord 2:37a61db8b04b 1036 Thread::wait(200);
emperord 2:37a61db8b04b 1037 pump6 = 0;
emperord 2:37a61db8b04b 1038
emperord 2:37a61db8b04b 1039 }
emperord 2:37a61db8b04b 1040 Thread::wait(2000);
emperord 2:37a61db8b04b 1041 pump5 = 0;
emperord 2:37a61db8b04b 1042 Thread::wait(300);
emperord 2:37a61db8b04b 1043 pcount = 0;
emperord 2:37a61db8b04b 1044 MODE = 4;
emperord 2:37a61db8b04b 1045 }
emperord 2:37a61db8b04b 1046
emperord 2:37a61db8b04b 1047 void screencycle();
emperord 2:37a61db8b04b 1048 void setdatetime() {
emperord 2:37a61db8b04b 1049 cmd[0] = Oscillator; // Aging_offset
emperord 2:37a61db8b04b 1050 cmd[1] = 0x80 + 0x40 + 0x1; // -1ppm
emperord 2:37a61db8b04b 1051 i2c.write(PCF85263AT_ADDR, cmd, 2); // Aging_offset
emperord 2:37a61db8b04b 1052
emperord 2:37a61db8b04b 1053 cmd[0] = Function; // Aging_offset
emperord 2:37a61db8b04b 1054 cmd[1] = 0x1; // -1ppm
emperord 2:37a61db8b04b 1055 i2c.write(PCF85263AT_ADDR, cmd, 2); // Aging_offset
emperord 2:37a61db8b04b 1056
emperord 2:37a61db8b04b 1057 cmd[0] = Offset; // Aging_offset
emperord 2:37a61db8b04b 1058 cmd[1] = 60; // -1ppm
emperord 2:37a61db8b04b 1059 i2c.write(PCF85263AT_ADDR, cmd, 2); // Aging_offse
emperord 2:37a61db8b04b 1060
emperord 2:37a61db8b04b 1061
emperord 2:37a61db8b04b 1062 dt.y = 2000+(int)d3count;
emperord 2:37a61db8b04b 1063 dt.mm = (int)d1count;
emperord 2:37a61db8b04b 1064 dt.d = (int)d2count;
emperord 2:37a61db8b04b 1065 dt.h = (int)d4count;
emperord 2:37a61db8b04b 1066 dt.m = (int)d5count;
emperord 2:37a61db8b04b 1067 dt.s = 0;
emperord 2:37a61db8b04b 1068 set_time(&dt);
emperord 2:37a61db8b04b 1069
emperord 2:37a61db8b04b 1070 }
emperord 2:37a61db8b04b 1071 void screen() {
emperord 2:37a61db8b04b 1072 while(1) {
emperord 2:37a61db8b04b 1073 if (p1count<0){p1count=0;}
emperord 2:37a61db8b04b 1074 if (p2count<0){p2count=0;}
emperord 2:37a61db8b04b 1075 if (p3count<0){p3count=0;}
emperord 2:37a61db8b04b 1076 if (p4count<0){p4count=0;}
emperord 2:37a61db8b04b 1077 if (p5count<0){p5count=0;}
emperord 2:37a61db8b04b 1078 if (p6count<0){p6count=0;}
emperord 2:37a61db8b04b 1079 if (p7count<0){p7count=0;}
emperord 2:37a61db8b04b 1080 //pump1.pulsewidth(p1count/750000);
emperord 2:37a61db8b04b 1081
emperord 2:37a61db8b04b 1082 if (p1on == true || p2on == true || p3on == true || p4on == true || p5on == true || p6on == true || p7on == true) { Aon = true; }
emperord 2:37a61db8b04b 1083 if (p1on == false && p2on == false && p3on == false && p4on == false && p5on == false && p6on == false && p7on == false) { Aon = false; }
emperord 2:37a61db8b04b 1084
emperord 2:37a61db8b04b 1085
emperord 2:37a61db8b04b 1086 if (writefail == 1) {
emperord 2:37a61db8b04b 1087 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1088 lcd.FillCircle(235,175,10);
emperord 2:37a61db8b04b 1089 }
emperord 2:37a61db8b04b 1090
emperord 2:37a61db8b04b 1091 //General Display
emperord 2:37a61db8b04b 1092 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1093 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1094 sprintf((char*)textn1, "%0.1f/%0.5f Ag", Silver, SilverRAW);
emperord 2:37a61db8b04b 1095 if (strcmp((char*)text1,(char*)textn1) != 0) {
emperord 2:37a61db8b04b 1096 sprintf((char*)text1, "%0.1f/%0.5f Ag", Silver, SilverRAW);
emperord 2:37a61db8b04b 1097 lcd.ClearStringLine(13);
emperord 2:37a61db8b04b 1098 }
emperord 2:37a61db8b04b 1099 lcd.DisplayStringAt(0, LINE(13), (uint8_t *)&text1, CENTER_MODE);
emperord 2:37a61db8b04b 1100
emperord 2:37a61db8b04b 1101
emperord 2:37a61db8b04b 1102 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1103 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1104 sprintf((char*)textn4, "%0.1f/%0.5f Cu L:%d", Copper, CopperRAW, LVL);
emperord 2:37a61db8b04b 1105 if (strcmp((char*)text4,(char*)textn4) != 0) {
emperord 2:37a61db8b04b 1106 sprintf((char*)text4, "%0.1f/%0.5f Cu L:%d", Copper, CopperRAW, LVL);
emperord 2:37a61db8b04b 1107 lcd.ClearStringLine(14);
emperord 2:37a61db8b04b 1108 }
emperord 2:37a61db8b04b 1109 lcd.DisplayStringAt(0, LINE(14), (uint8_t *)&text4, CENTER_MODE);
emperord 2:37a61db8b04b 1110
emperord 2:37a61db8b04b 1111
emperord 2:37a61db8b04b 1112
emperord 2:37a61db8b04b 1113 lcd.SetTextColor(LCD_COLOR_DARKGRAY);
emperord 2:37a61db8b04b 1114 sprintf((char*)textn4, "RAW=%0.4f | %d | %d | %d", RAW, DARK, ZERO, READ);
emperord 2:37a61db8b04b 1115 if (strcmp((char*)text4,(char*)textn4) != 0) {
emperord 2:37a61db8b04b 1116 sprintf((char*)text4, "RAW=%0.4f | %d | %d | %d", RAW, DARK, ZERO, READ);
emperord 2:37a61db8b04b 1117 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1118 }
emperord 2:37a61db8b04b 1119 lcd.DisplayStringAt(0, LINE(15), (uint8_t *)&text4, CENTER_MODE);
emperord 2:37a61db8b04b 1120
emperord 2:37a61db8b04b 1121 sprintf((char*)textn5, "RAW Volts=%0.3f | %0.3f | %0.3f", ((double)DARK/16777216)*3.302, ((double)ZERO/16777216)*3.302, ((double)READ/16777216)*3.302);
emperord 2:37a61db8b04b 1122 if (strcmp((char*)text5,(char*)textn5) != 0) {
emperord 2:37a61db8b04b 1123 sprintf((char*)text5, "RAW Volts=%0.3f | %0.3f | %0.3f", ((double)DARK/16777216)*3.302, ((double)ZERO/16777216)*3.302, ((double)READ/16777216)*3.302);
emperord 2:37a61db8b04b 1124 lcd.ClearStringLine(16);
emperord 2:37a61db8b04b 1125 }
emperord 2:37a61db8b04b 1126 lcd.DisplayStringAt(0, LINE(16), (uint8_t *)&text5, CENTER_MODE);
emperord 2:37a61db8b04b 1127
emperord 2:37a61db8b04b 1128
emperord 2:37a61db8b04b 1129
emperord 2:37a61db8b04b 1130 if (MODE == 0 && (strcmp((char*)text3,"Dark Reading") != 0)) {
emperord 2:37a61db8b04b 1131 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1132 sprintf((char*)text3, "Dark Reading");
emperord 2:37a61db8b04b 1133 }
emperord 2:37a61db8b04b 1134 if (MODE == 1 && (strcmp((char*)text3,"Zeroing") != 0)) {
emperord 2:37a61db8b04b 1135 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1136 sprintf((char*)text3, "Zeroing");
emperord 2:37a61db8b04b 1137 }
emperord 2:37a61db8b04b 1138 if (MODE == 2 && (strcmp((char*)text3,"Reading") != 0)) {
emperord 2:37a61db8b04b 1139 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1140 sprintf((char*)text3, "Reading");
emperord 2:37a61db8b04b 1141 }
emperord 2:37a61db8b04b 1142 if (MODE == 3 && (strcmp((char*)text3,"Priming") != 0)) {
emperord 2:37a61db8b04b 1143 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1144 sprintf((char*)text3, "Priming");
emperord 2:37a61db8b04b 1145 }
emperord 2:37a61db8b04b 1146 sprintf((char*)textn3, "Waiting%s", cyclestep);
emperord 2:37a61db8b04b 1147 if (MODE == 4 && (strcmp((char*)text3,(char*)textn3) != 0)) {
emperord 2:37a61db8b04b 1148 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1149 sprintf((char*)text3, "Waiting%s", cyclestep);
emperord 2:37a61db8b04b 1150 }
emperord 2:37a61db8b04b 1151 if (MODE == 5 && (strcmp((char*)text3,"Sampling") != 0)) {
emperord 2:37a61db8b04b 1152 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1153 sprintf((char*)text3, "Sampling");
emperord 2:37a61db8b04b 1154 }
emperord 2:37a61db8b04b 1155 if (MODE == 6 && (strcmp((char*)text3,"Washing") != 0)) {
emperord 2:37a61db8b04b 1156 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1157 sprintf((char*)text3, "Washing");
emperord 2:37a61db8b04b 1158 }
emperord 2:37a61db8b04b 1159 if (MODE == 7 && (strcmp((char*)text3,"Mixing") != 0)) {
emperord 2:37a61db8b04b 1160 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1161 sprintf((char*)text3, "Mixing");
emperord 2:37a61db8b04b 1162 }
emperord 2:37a61db8b04b 1163 if (MODE == 8 && (strcmp((char*)text3,"Ag Buffer Dosing") != 0)) {
emperord 2:37a61db8b04b 1164 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1165 sprintf((char*)text3, "Ag Buffer Dosing");
emperord 2:37a61db8b04b 1166 }
emperord 2:37a61db8b04b 1167 if (MODE == 9 && (strcmp((char*)text3,"Ag Indicator Dosing") != 0)) {
emperord 2:37a61db8b04b 1168 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1169 sprintf((char*)text3, "Ag Indicator Dosing");
emperord 2:37a61db8b04b 1170 }
emperord 2:37a61db8b04b 1171 if (MODE == 10 && (strcmp((char*)text3,"Cu Indicator Dosing") != 0)) {
emperord 2:37a61db8b04b 1172 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1173 sprintf((char*)text3, "Cu Indicator Dosing");
emperord 2:37a61db8b04b 1174 }
emperord 2:37a61db8b04b 1175 if (MODE == 11 && (strcmp((char*)text3,"Write Success") != 0)) {
emperord 2:37a61db8b04b 1176 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1177 sprintf((char*)text3, "Write Success");
emperord 2:37a61db8b04b 1178 }
emperord 2:37a61db8b04b 1179 if (MODE == 12 && (strcmp((char*)text3,"Level") != 0)) {
emperord 2:37a61db8b04b 1180 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1181 sprintf((char*)text3, "Level");
emperord 2:37a61db8b04b 1182 }
emperord 2:37a61db8b04b 1183 if (MODE == 13 && (strcmp((char*)text3,"Write Fail") != 0)) {
emperord 2:37a61db8b04b 1184 lcd.ClearStringLine(12);
emperord 2:37a61db8b04b 1185 sprintf((char*)text3, "Write Fail");
emperord 2:37a61db8b04b 1186 }
emperord 2:37a61db8b04b 1187
emperord 2:37a61db8b04b 1188 lcd.SetTextColor(LCD_COLOR_LIGHTRED);
emperord 2:37a61db8b04b 1189 lcd.DisplayStringAt(0, LINE(12), (uint8_t *)&text3, CENTER_MODE);
emperord 2:37a61db8b04b 1190
emperord 2:37a61db8b04b 1191 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1192 lcd.SetFont(&Font24);
emperord 2:37a61db8b04b 1193 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"WOLFMAN", CENTER_MODE);
emperord 2:37a61db8b04b 1194
emperord 2:37a61db8b04b 1195
emperord 2:37a61db8b04b 1196 //Prime Button
emperord 2:37a61db8b04b 1197 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1198 if (pcount == 0) {
emperord 2:37a61db8b04b 1199 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1200 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1201 touchbutt = DrawButton(20, 2, 50, 15);
emperord 2:37a61db8b04b 1202 for( int i = 0 ; i < 4 ; ++i ){ primeon[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1203 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1204 lcd.DisplayStringAt(20, 2, (uint8_t *)"Prime", LEFT_MODE);
emperord 2:37a61db8b04b 1205 } else {
emperord 2:37a61db8b04b 1206 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1207 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1208 touchbutt = DrawButton(20, 2, 50, 15);
emperord 2:37a61db8b04b 1209 for( int i = 0 ; i < 4 ; ++i ){ primeon[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1210 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1211 sprintf((char*)nus_buffer, "%d", (int)pcount);
emperord 2:37a61db8b04b 1212 lcd.DisplayStringAt(20, 2, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 1213 }
emperord 2:37a61db8b04b 1214
emperord 2:37a61db8b04b 1215 //Screen Mode
emperord 2:37a61db8b04b 1216 //lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1217 //lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1218 touchbutt = DrawButton(230, 30, 50, 15);
emperord 2:37a61db8b04b 1219 for( int i = 0 ; i < 4 ; ++i ){ screenmode[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1220
emperord 2:37a61db8b04b 1221
emperord 2:37a61db8b04b 1222 //Cu Only Button
emperord 2:37a61db8b04b 1223 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1224 if (CuMODE == false) {
emperord 2:37a61db8b04b 1225 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1226 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1227 touchbutt = DrawButton(90, 2, 25, 15);
emperord 2:37a61db8b04b 1228 for( int i = 0 ; i < 4 ; ++i ){ CuMODEonoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1229 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1230 lcd.DisplayStringAt(90, 2, (uint8_t *)"Cu", LEFT_MODE);
emperord 2:37a61db8b04b 1231 } else {
emperord 2:37a61db8b04b 1232 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1233 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1234 touchbutt = DrawButton(90, 2, 25, 15);
emperord 2:37a61db8b04b 1235 for( int i = 0 ; i < 4 ; ++i ){ CuMODEonoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1236 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1237 lcd.DisplayStringAt(90, 2, (uint8_t *)"Cu", LEFT_MODE);
emperord 2:37a61db8b04b 1238 }
emperord 2:37a61db8b04b 1239 //Ag Only Button
emperord 2:37a61db8b04b 1240 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1241 if (AgMODE == false) {
emperord 2:37a61db8b04b 1242 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1243 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1244 touchbutt = DrawButton(130, 2, 25, 15);
emperord 2:37a61db8b04b 1245 for( int i = 0 ; i < 4 ; ++i ){ AgMODEonoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1246 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1247 lcd.DisplayStringAt(130, 2, (uint8_t *)"Ag", LEFT_MODE);
emperord 2:37a61db8b04b 1248 } else {
emperord 2:37a61db8b04b 1249 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1250 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1251 touchbutt = DrawButton(130, 2, 25, 15);
emperord 2:37a61db8b04b 1252 for( int i = 0 ; i < 4 ; ++i ){ AgMODEonoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1253 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1254 lcd.DisplayStringAt(130, 2, (uint8_t *)"Ag", LEFT_MODE);
emperord 2:37a61db8b04b 1255 }
emperord 2:37a61db8b04b 1256
emperord 2:37a61db8b04b 1257
bcostm 0:9933f7db9a9b 1258
emperord 2:37a61db8b04b 1259 //Mode Button
emperord 2:37a61db8b04b 1260 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1261 if (ManMode == true) {
emperord 2:37a61db8b04b 1262 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1263 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1264 touchbutt = DrawButton(340, 2, 50, 15);
emperord 2:37a61db8b04b 1265 for( int i = 0 ; i < 4 ; ++i ){ Manonoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1266 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1267 lcd.DisplayStringAt(346, 5, (uint8_t *)"Manual", LEFT_MODE);
emperord 2:37a61db8b04b 1268 } else {
emperord 2:37a61db8b04b 1269 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1270 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1271 touchbutt = DrawButton(340, 2, 50, 15);
emperord 2:37a61db8b04b 1272 for( int i = 0 ; i < 4 ; ++i ){ Manonoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1273 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1274 lcd.DisplayStringAt(348, 5, (uint8_t *)"Auto", LEFT_MODE);
emperord 2:37a61db8b04b 1275 }
emperord 2:37a61db8b04b 1276
emperord 2:37a61db8b04b 1277
emperord 2:37a61db8b04b 1278
emperord 2:37a61db8b04b 1279
emperord 2:37a61db8b04b 1280 //All Button
emperord 2:37a61db8b04b 1281 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1282 if (Aon == true) {
emperord 2:37a61db8b04b 1283 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1284 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1285 touchbutt = DrawButton(410, 2, 50, 15);
emperord 2:37a61db8b04b 1286 for( int i = 0 ; i < 4 ; ++i ){ Aonoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1287 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1288 lcd.DisplayStringAt(411, 5, (uint8_t *)"All ON", LEFT_MODE);
emperord 2:37a61db8b04b 1289 } else {
emperord 2:37a61db8b04b 1290 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1291 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1292 touchbutt = DrawButton(410, 2, 50, 15);
emperord 2:37a61db8b04b 1293 for( int i = 0 ; i < 4 ; ++i ){ Aonoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1294 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1295 lcd.DisplayStringAt(410, 5, (uint8_t *)"All OFF", LEFT_MODE);
emperord 2:37a61db8b04b 1296 }
emperord 2:37a61db8b04b 1297
emperord 2:37a61db8b04b 1298 //pump 1 controls
emperord 2:37a61db8b04b 1299 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1300 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1301 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1302 lcd.DisplayStringAt(10, 30, (uint8_t *)"AgBuf", LEFT_MODE);
emperord 2:37a61db8b04b 1303 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1304 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 1305 toucharrow = DrawArrow(30,50,1,2);
emperord 2:37a61db8b04b 1306 for( int i = 0 ; i < 4 ; ++i ){ p1up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1307 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1308 toucharrow = DrawArrow(30,150,2,2);
emperord 2:37a61db8b04b 1309 for( int i = 0 ; i < 4 ; ++i ){ p1down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1310 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1311 sprintf((char*)nus_buffer, "%d", (int)p1count);
emperord 2:37a61db8b04b 1312 lcd.DisplayStringAt(30, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 1313 if (p1on == true) {
emperord 2:37a61db8b04b 1314 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1315 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1316 touchbutt = DrawButton(10, 165, 40, 15);
emperord 2:37a61db8b04b 1317 for( int i = 0 ; i < 4 ; ++i ){ p1onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1318 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1319 lcd.DisplayStringAt(20, 168, (uint8_t *)"ON", LEFT_MODE);
emperord 2:37a61db8b04b 1320 } else {
emperord 2:37a61db8b04b 1321 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1322 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1323 touchbutt = DrawButton(10, 165, 40, 15);
emperord 2:37a61db8b04b 1324 for( int i = 0 ; i < 4 ; ++i ){ p1onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1325 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1326 lcd.DisplayStringAt(20, 168, (uint8_t *)"OFF", LEFT_MODE);
emperord 2:37a61db8b04b 1327 }
emperord 2:37a61db8b04b 1328
emperord 2:37a61db8b04b 1329
emperord 2:37a61db8b04b 1330
emperord 2:37a61db8b04b 1331 //pump 2 controls
emperord 2:37a61db8b04b 1332 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1333 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1334 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1335 lcd.DisplayStringAt(80, 30, (uint8_t *)"AgInd", LEFT_MODE);
emperord 2:37a61db8b04b 1336 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1337 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 1338 toucharrow = DrawArrow(100,50,1,2);
emperord 2:37a61db8b04b 1339 for( int i = 0 ; i < 4 ; ++i ){ p2up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1340 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1341 toucharrow = DrawArrow(100,150,2,2);
emperord 2:37a61db8b04b 1342 for( int i = 0 ; i < 4 ; ++i ){ p2down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1343 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1344 sprintf((char*)nus_buffer, "%d", (int)p2count);
emperord 2:37a61db8b04b 1345 lcd.DisplayStringAt(100, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 1346 if (p2on == true) {
emperord 2:37a61db8b04b 1347 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1348 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1349 touchbutt = DrawButton(80, 165, 40, 15);
emperord 2:37a61db8b04b 1350 for( int i = 0 ; i < 4 ; ++i ){ p2onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1351 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1352 lcd.DisplayStringAt(90, 168, (uint8_t *)"ON", LEFT_MODE);
emperord 2:37a61db8b04b 1353 } else {
emperord 2:37a61db8b04b 1354 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1355 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1356 touchbutt = DrawButton(80, 165, 40, 15);
emperord 2:37a61db8b04b 1357 for( int i = 0 ; i < 4 ; ++i ){ p2onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1358 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1359 lcd.DisplayStringAt(90, 168, (uint8_t *)"OFF", LEFT_MODE);
emperord 2:37a61db8b04b 1360 }
emperord 2:37a61db8b04b 1361
emperord 2:37a61db8b04b 1362
emperord 2:37a61db8b04b 1363
emperord 2:37a61db8b04b 1364 //pump 3 controls
emperord 2:37a61db8b04b 1365 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1366 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1367 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1368 lcd.DisplayStringAt(150, 30, (uint8_t *)"CuInd", LEFT_MODE);
emperord 2:37a61db8b04b 1369 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1370 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 1371 toucharrow = DrawArrow(170,50,1,2);
emperord 2:37a61db8b04b 1372 for( int i = 0 ; i < 4 ; ++i ){ p3up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1373 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1374 toucharrow = DrawArrow(170,150,2,2);
emperord 2:37a61db8b04b 1375 for( int i = 0 ; i < 4 ; ++i ){ p3down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1376 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1377 sprintf((char*)nus_buffer, "%d", (int)p3count);
emperord 2:37a61db8b04b 1378 lcd.DisplayStringAt(170, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 1379 if (p3on == true) {
emperord 2:37a61db8b04b 1380 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1381 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1382 touchbutt = DrawButton(150, 165, 40, 15);
emperord 2:37a61db8b04b 1383 for( int i = 0 ; i < 4 ; ++i ){ p3onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1384 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1385 lcd.DisplayStringAt(160, 168, (uint8_t *)"ON", LEFT_MODE);
emperord 2:37a61db8b04b 1386 } else {
emperord 2:37a61db8b04b 1387 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1388 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1389 touchbutt = DrawButton(150, 165, 40, 15);
emperord 2:37a61db8b04b 1390 for( int i = 0 ; i < 4 ; ++i ){ p3onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1391 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1392 lcd.DisplayStringAt(160, 168, (uint8_t *)"OFF", LEFT_MODE);
emperord 2:37a61db8b04b 1393 }
emperord 2:37a61db8b04b 1394
emperord 2:37a61db8b04b 1395
emperord 2:37a61db8b04b 1396
emperord 2:37a61db8b04b 1397 /*
emperord 2:37a61db8b04b 1398 //pump 4 controls
emperord 2:37a61db8b04b 1399 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1400 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1401 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1402 lcd.DisplayStringAt(220, 30, (uint8_t *)"OCl", LEFT_MODE);
emperord 2:37a61db8b04b 1403 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1404 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 1405 toucharrow = DrawArrow(240,50,1,2);
emperord 2:37a61db8b04b 1406 for( int i = 0 ; i < 4 ; ++i ){ p4up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1407 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1408 toucharrow = DrawArrow(240,150,2,2);
emperord 2:37a61db8b04b 1409 for( int i = 0 ; i < 4 ; ++i ){ p4down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1410 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1411 sprintf((char*)nus_buffer, "%d", (int)p4count);
emperord 2:37a61db8b04b 1412 lcd.DisplayStringAt(240, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 1413 if (p4on == true) {
emperord 2:37a61db8b04b 1414 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1415 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1416 touchbutt = DrawButton(220, 165, 40, 15);
emperord 2:37a61db8b04b 1417 for( int i = 0 ; i < 4 ; ++i ){ p4onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1418 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1419 lcd.DisplayStringAt(230, 168, (uint8_t *)"ON", LEFT_MODE);
emperord 2:37a61db8b04b 1420 } else {
emperord 2:37a61db8b04b 1421 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1422 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1423 touchbutt = DrawButton(220, 165, 40, 15);
emperord 2:37a61db8b04b 1424 for( int i = 0 ; i < 4 ; ++i ){ p4onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1425 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1426 lcd.DisplayStringAt(230, 168, (uint8_t *)"OFF", LEFT_MODE);
emperord 2:37a61db8b04b 1427 }
emperord 2:37a61db8b04b 1428 */
emperord 2:37a61db8b04b 1429
emperord 2:37a61db8b04b 1430 //Solenoid 5 controls
emperord 2:37a61db8b04b 1431 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1432 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1433 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1434 lcd.DisplayStringAt(285, 30, (uint8_t *)"Drain", LEFT_MODE);
emperord 2:37a61db8b04b 1435 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1436 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 1437 toucharrow = DrawArrow(310,50,1,2);
emperord 2:37a61db8b04b 1438 for( int i = 0 ; i < 4 ; ++i ){ p5up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1439 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1440 toucharrow = DrawArrow(310,150,2,2);
emperord 2:37a61db8b04b 1441 for( int i = 0 ; i < 4 ; ++i ){ p5down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1442 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1443 sprintf((char*)nus_buffer, "%d", (int)p5count);
emperord 2:37a61db8b04b 1444 lcd.DisplayStringAt(310, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 1445 if (p5on == true) {
emperord 2:37a61db8b04b 1446 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1447 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1448 touchbutt = DrawButton(290, 165, 40, 15);
emperord 2:37a61db8b04b 1449 for( int i = 0 ; i < 4 ; ++i ){ p5onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1450 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1451 lcd.DisplayStringAt(300, 168, (uint8_t *)"ON", LEFT_MODE);
emperord 2:37a61db8b04b 1452 } else {
emperord 2:37a61db8b04b 1453 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1454 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1455 touchbutt = DrawButton(290, 165, 40, 15);
emperord 2:37a61db8b04b 1456 for( int i = 0 ; i < 4 ; ++i ){ p5onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1457 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1458 lcd.DisplayStringAt(300, 168, (uint8_t *)"OFF", LEFT_MODE);
emperord 2:37a61db8b04b 1459 }
emperord 2:37a61db8b04b 1460 //Pump 6 controls
emperord 2:37a61db8b04b 1461 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1462 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1463 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1464 lcd.DisplayStringAt(360, 30, (uint8_t *)"Mix", LEFT_MODE);
emperord 2:37a61db8b04b 1465 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1466 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 1467 toucharrow = DrawArrow(380,50,1,2);
emperord 2:37a61db8b04b 1468 for( int i = 0 ; i < 4 ; ++i ){ p6up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1469 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1470 toucharrow = DrawArrow(380,150,2,2);
emperord 2:37a61db8b04b 1471 for( int i = 0 ; i < 4 ; ++i ){ p6down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1472 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1473 sprintf((char*)nus_buffer, "%d", (int)p6count);
emperord 2:37a61db8b04b 1474 lcd.DisplayStringAt(380, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 1475 if (p6on == true) {
emperord 2:37a61db8b04b 1476 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1477 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1478 touchbutt = DrawButton(360, 165, 40, 15);
emperord 2:37a61db8b04b 1479 for( int i = 0 ; i < 4 ; ++i ){ p6onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1480 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1481 lcd.DisplayStringAt(370, 168, (uint8_t *)"ON", LEFT_MODE);
emperord 2:37a61db8b04b 1482 } else {
emperord 2:37a61db8b04b 1483 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1484 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1485 touchbutt = DrawButton(360, 165, 40, 15);
emperord 2:37a61db8b04b 1486 for( int i = 0 ; i < 4 ; ++i ){ p6onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1487 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1488 lcd.DisplayStringAt(370, 168, (uint8_t *)"OFF", LEFT_MODE);
emperord 2:37a61db8b04b 1489 }
emperord 2:37a61db8b04b 1490 //Pump 7 controls
emperord 2:37a61db8b04b 1491 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1492 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1493 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1494 lcd.DisplayStringAt(430, 30, (uint8_t *)"Fill", LEFT_MODE);
emperord 2:37a61db8b04b 1495 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1496 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 1497 toucharrow = DrawArrow(450,50,1,2);
emperord 2:37a61db8b04b 1498 for( int i = 0 ; i < 4 ; ++i ){ p7up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1499 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1500 toucharrow = DrawArrow(450,150,2,2);
emperord 2:37a61db8b04b 1501 for( int i = 0 ; i < 4 ; ++i ){ p7down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 1502 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1503 sprintf((char*)nus_buffer, "%d", (int)p7count);
emperord 2:37a61db8b04b 1504 lcd.DisplayStringAt(450, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 1505 if (p7on == true) {
emperord 2:37a61db8b04b 1506 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1507 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1508 touchbutt = DrawButton(430, 165, 40, 15);
emperord 2:37a61db8b04b 1509 for( int i = 0 ; i < 4 ; ++i ){ p7onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1510 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1511 lcd.DisplayStringAt(440, 168, (uint8_t *)"ON", LEFT_MODE);
emperord 2:37a61db8b04b 1512 } else {
emperord 2:37a61db8b04b 1513 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1514 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1515 touchbutt = DrawButton(430, 165, 40, 15);
emperord 2:37a61db8b04b 1516 for( int i = 0 ; i < 4 ; ++i ){ p7onoff[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1517 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1518 lcd.DisplayStringAt(440, 168, (uint8_t *)"OFF", LEFT_MODE);
emperord 2:37a61db8b04b 1519 }
emperord 2:37a61db8b04b 1520
emperord 2:37a61db8b04b 1521 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1522 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
bcostm 0:9933f7db9a9b 1523 ts.GetState(&TS_State);
bcostm 0:9933f7db9a9b 1524 if (TS_State.touchDetected) {
bcostm 0:9933f7db9a9b 1525 // Clear lines corresponding to old touches coordinates
bcostm 0:9933f7db9a9b 1526 if (TS_State.touchDetected < prev_nb_touches) {
bcostm 0:9933f7db9a9b 1527 for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
bcostm 0:9933f7db9a9b 1528 lcd.ClearStringLine(idx);
bcostm 0:9933f7db9a9b 1529 }
bcostm 0:9933f7db9a9b 1530 }
bcostm 0:9933f7db9a9b 1531 prev_nb_touches = TS_State.touchDetected;
bcostm 0:9933f7db9a9b 1532
bcostm 0:9933f7db9a9b 1533 cleared = 0;
bcostm 0:9933f7db9a9b 1534
emperord 2:37a61db8b04b 1535 /* sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
emperord 2:37a61db8b04b 1536 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); */
emperord 2:37a61db8b04b 1537
emperord 2:37a61db8b04b 1538
emperord 2:37a61db8b04b 1539
emperord 2:37a61db8b04b 1540 for (idx = 0; idx < TS_State.touchDetected; idx++) {
emperord 2:37a61db8b04b 1541 x = TS_State.touchX[idx];
emperord 2:37a61db8b04b 1542 y = TS_State.touchY[idx];
emperord 2:37a61db8b04b 1543 double touchsensativity = 0.075; //(0.055 originaly)
emperord 2:37a61db8b04b 1544
emperord 2:37a61db8b04b 1545
emperord 2:37a61db8b04b 1546 if (( x >= primeon[0] && x <= primeon[1] ) && (y >= primeon[2] && y <= primeon[3])) {
emperord 2:37a61db8b04b 1547 thread2.terminate();
emperord 2:37a61db8b04b 1548 if (pcount != 0) {
emperord 2:37a61db8b04b 1549 pcount = 0;
emperord 2:37a61db8b04b 1550 thread2.start(takereading);
emperord 2:37a61db8b04b 1551 }
emperord 2:37a61db8b04b 1552 else {
emperord 2:37a61db8b04b 1553 ManMode = false;
emperord 2:37a61db8b04b 1554 Aon = false;
emperord 2:37a61db8b04b 1555 p1on = false;
emperord 2:37a61db8b04b 1556 p2on = false;
emperord 2:37a61db8b04b 1557 p3on = false;
emperord 2:37a61db8b04b 1558 p4on = false;
emperord 2:37a61db8b04b 1559 p5on = false;
emperord 2:37a61db8b04b 1560 p6on = false;
emperord 2:37a61db8b04b 1561 p7on = false;
emperord 2:37a61db8b04b 1562 thread2.start(prime);
emperord 2:37a61db8b04b 1563 }
emperord 2:37a61db8b04b 1564 Thread::wait(300);
emperord 2:37a61db8b04b 1565 }
emperord 2:37a61db8b04b 1566
emperord 2:37a61db8b04b 1567
emperord 2:37a61db8b04b 1568 if (( x >= Manonoff[0] && x <= Manonoff[1] ) && (y >= Manonoff[2] && y <= Manonoff[3])){
emperord 2:37a61db8b04b 1569 ManMode = !ManMode;
emperord 2:37a61db8b04b 1570 //motors[1]->wait_while_active();
emperord 2:37a61db8b04b 1571 if (ManMode == true) {
emperord 2:37a61db8b04b 1572 thread2.terminate();
emperord 2:37a61db8b04b 1573 p1on = false;
emperord 2:37a61db8b04b 1574 p2on = false;
emperord 2:37a61db8b04b 1575 p3on = false;
emperord 2:37a61db8b04b 1576 p4on = false;
emperord 2:37a61db8b04b 1577 p5on = false;
emperord 2:37a61db8b04b 1578 p6on = false;
emperord 2:37a61db8b04b 1579 p7on = false;
emperord 2:37a61db8b04b 1580 thread2.start(runpump);
emperord 2:37a61db8b04b 1581 thread3.terminate();
emperord 2:37a61db8b04b 1582 thread3.start(takereading);
emperord 2:37a61db8b04b 1583 } else {
emperord 2:37a61db8b04b 1584 thread2.terminate();
emperord 2:37a61db8b04b 1585 thread3.terminate();
emperord 2:37a61db8b04b 1586 thread3.start(takereading);
emperord 2:37a61db8b04b 1587 }
emperord 2:37a61db8b04b 1588 Thread::wait(200);
emperord 2:37a61db8b04b 1589 }
emperord 2:37a61db8b04b 1590
emperord 2:37a61db8b04b 1591 if (( x >= CuMODEonoff[0] && x <= CuMODEonoff[1] ) && (y >= CuMODEonoff[2] && y <= CuMODEonoff[3])){ CuMODE = !CuMODE; }
emperord 2:37a61db8b04b 1592 if (( x >= AgMODEonoff[0] && x <= AgMODEonoff[1] ) && (y >= AgMODEonoff[2] && y <= AgMODEonoff[3])){ AgMODE = !AgMODE; }
emperord 2:37a61db8b04b 1593
emperord 2:37a61db8b04b 1594 if (( x >= screenmode[0] && x <= screenmode[1] ) && (y >= screenmode[2] && y <= screenmode[3])){
emperord 2:37a61db8b04b 1595 screenstate = screenstate + 1;
emperord 2:37a61db8b04b 1596 if (screenstate > 2){ screenstate = 0; }
emperord 2:37a61db8b04b 1597 Thread::wait(200);
emperord 2:37a61db8b04b 1598 EE_WriteVariable(VirtAddVarTab[7], (uint16_t)screenstate);
emperord 2:37a61db8b04b 1599 screencycle();
emperord 2:37a61db8b04b 1600 return;
emperord 2:37a61db8b04b 1601 }
emperord 2:37a61db8b04b 1602
emperord 2:37a61db8b04b 1603
emperord 2:37a61db8b04b 1604 if (( x >= Aonoff[0] && x <= Aonoff[1] ) && (y >= Aonoff[2] && y <= Aonoff[3])){
emperord 2:37a61db8b04b 1605 Aon = !Aon;
emperord 2:37a61db8b04b 1606 if (Aon == true) {
emperord 2:37a61db8b04b 1607 p1on = true;
emperord 2:37a61db8b04b 1608 p2on = true;
emperord 2:37a61db8b04b 1609 p3on = true;
emperord 2:37a61db8b04b 1610 p4on = true;
emperord 2:37a61db8b04b 1611 p5on = true;
emperord 2:37a61db8b04b 1612 p6on = true;
emperord 2:37a61db8b04b 1613 p7on = true;
emperord 2:37a61db8b04b 1614 } else {
emperord 2:37a61db8b04b 1615 p1on = false;
emperord 2:37a61db8b04b 1616 p2on = false;
emperord 2:37a61db8b04b 1617 p3on = false;
emperord 2:37a61db8b04b 1618 p4on = false;
emperord 2:37a61db8b04b 1619 p5on = false;
emperord 2:37a61db8b04b 1620 p6on = false;
emperord 2:37a61db8b04b 1621 p7on = false;
emperord 2:37a61db8b04b 1622 }
emperord 2:37a61db8b04b 1623 Thread::wait(200);
emperord 2:37a61db8b04b 1624 //EE_WriteVariable(VirtAddVarTab[0], (uint16_t)p1count);
emperord 2:37a61db8b04b 1625 }
emperord 2:37a61db8b04b 1626
emperord 2:37a61db8b04b 1627 //pump1
emperord 2:37a61db8b04b 1628 if (( x >= p1up[0] && x <= p1up[1] ) && (y >= p1up[2] && y <= p1up[3])){
emperord 2:37a61db8b04b 1629 p1count = p1count + touchsensativity;
emperord 2:37a61db8b04b 1630 Thread::wait(2);
emperord 2:37a61db8b04b 1631 EE_WriteVariable(VirtAddVarTab[0], (uint16_t)p1count);
emperord 2:37a61db8b04b 1632
emperord 2:37a61db8b04b 1633 }
emperord 2:37a61db8b04b 1634 if (( x >= p1down[0] && x <= p1down[1] ) && (y >= p1down[2] && y <= p1down[3])){
emperord 2:37a61db8b04b 1635 p1count = p1count - touchsensativity;
emperord 2:37a61db8b04b 1636 Thread::wait(2);
emperord 2:37a61db8b04b 1637 EE_WriteVariable(VirtAddVarTab[0], (uint16_t)p1count);
emperord 2:37a61db8b04b 1638 }
emperord 2:37a61db8b04b 1639 if (( x >= p1onoff[0] && x <= p1onoff[1] ) && (y >= p1onoff[2] && y <= p1onoff[3])){
emperord 2:37a61db8b04b 1640 p1on = !p1on;
emperord 2:37a61db8b04b 1641 Thread::wait(200);
emperord 2:37a61db8b04b 1642 }
emperord 2:37a61db8b04b 1643 //pump2
emperord 2:37a61db8b04b 1644 if (( x >= p2up[0] && x <= p2up[1] ) && (y >= p2up[2] && y <= p2up[3])){
emperord 2:37a61db8b04b 1645 p2count = p2count + touchsensativity;
emperord 2:37a61db8b04b 1646 Thread::wait(2);
emperord 2:37a61db8b04b 1647 EE_WriteVariable(VirtAddVarTab[1], (uint16_t)p2count);
emperord 2:37a61db8b04b 1648
emperord 2:37a61db8b04b 1649 }
emperord 2:37a61db8b04b 1650 if (( x >= p2down[0] && x <= p2down[1] ) && (y >= p2down[2] && y <= p2down[3])){
emperord 2:37a61db8b04b 1651 p2count = p2count - touchsensativity;
emperord 2:37a61db8b04b 1652 Thread::wait(2);
emperord 2:37a61db8b04b 1653 EE_WriteVariable(VirtAddVarTab[1], (uint16_t)p2count);
emperord 2:37a61db8b04b 1654 }
emperord 2:37a61db8b04b 1655 if (( x >= p2onoff[0] && x <= p2onoff[1] ) && (y >= p2onoff[2] && y <= p2onoff[3])){
emperord 2:37a61db8b04b 1656 p2on = !p2on;
emperord 2:37a61db8b04b 1657 Thread::wait(200);
emperord 2:37a61db8b04b 1658 }
emperord 2:37a61db8b04b 1659 //pump3
emperord 2:37a61db8b04b 1660 if (( x >= p3up[0] && x <= p3up[1] ) && (y >= p3up[2] && y <= p3up[3])){
emperord 2:37a61db8b04b 1661 p3count = p3count + touchsensativity;
emperord 2:37a61db8b04b 1662 Thread::wait(2);
emperord 2:37a61db8b04b 1663 EE_WriteVariable(VirtAddVarTab[2], (uint16_t)p3count);
emperord 2:37a61db8b04b 1664
emperord 2:37a61db8b04b 1665 }
emperord 2:37a61db8b04b 1666 if (( x >= p3down[0] && x <= p3down[1] ) && (y >= p3down[2] && y <= p3down[3])){
emperord 2:37a61db8b04b 1667 p3count = p3count - touchsensativity;
emperord 2:37a61db8b04b 1668 Thread::wait(2);
emperord 2:37a61db8b04b 1669 EE_WriteVariable(VirtAddVarTab[2], (uint16_t)p3count);
emperord 2:37a61db8b04b 1670 }
emperord 2:37a61db8b04b 1671 if (( x >= p3onoff[0] && x <= p3onoff[1] ) && (y >= p3onoff[2] && y <= p3onoff[3])){
emperord 2:37a61db8b04b 1672 p3on = !p3on;
emperord 2:37a61db8b04b 1673 Thread::wait(200);
emperord 2:37a61db8b04b 1674 }
emperord 2:37a61db8b04b 1675 /* //pump4
emperord 2:37a61db8b04b 1676 if (( x >= p4up[0] && x <= p4up[1] ) && (y >= p4up[2] && y <= p4up[3])){
emperord 2:37a61db8b04b 1677 p4count = p4count + touchsensativity;
emperord 2:37a61db8b04b 1678 Thread::wait(2);
emperord 2:37a61db8b04b 1679 EE_WriteVariable(VirtAddVarTab[3], (uint16_t)p4count);
emperord 2:37a61db8b04b 1680
emperord 2:37a61db8b04b 1681 }
emperord 2:37a61db8b04b 1682 if (( x >= p4down[0] && x <= p4down[1] ) && (y >= p4down[2] && y <= p4down[3])){
emperord 2:37a61db8b04b 1683 p4count = p4count - touchsensativity;
emperord 2:37a61db8b04b 1684 Thread::wait(2);
emperord 2:37a61db8b04b 1685 EE_WriteVariable(VirtAddVarTab[3], (uint16_t)p4count);
emperord 2:37a61db8b04b 1686 }
emperord 2:37a61db8b04b 1687 if (( x >= p4onoff[0] && x <= p4onoff[1] ) && (y >= p4onoff[2] && y <= p4onoff[3])){
emperord 2:37a61db8b04b 1688 p4on = !p4on;
emperord 2:37a61db8b04b 1689 Thread::wait(200);
emperord 2:37a61db8b04b 1690 } */
emperord 2:37a61db8b04b 1691 //Sole5
emperord 2:37a61db8b04b 1692 if (( x >= p5up[0] && x <= p5up[1] ) && (y >= p5up[2] && y <= p5up[3])){
emperord 2:37a61db8b04b 1693 p5count = p5count + touchsensativity;
emperord 2:37a61db8b04b 1694 Thread::wait(2);
emperord 2:37a61db8b04b 1695 EE_WriteVariable(VirtAddVarTab[4], (uint16_t)p5count);
emperord 2:37a61db8b04b 1696
emperord 2:37a61db8b04b 1697 }
emperord 2:37a61db8b04b 1698 if (( x >= p5down[0] && x <= p5down[1] ) && (y >= p5down[2] && y <= p5down[3])){
emperord 2:37a61db8b04b 1699 p5count = p5count - touchsensativity;
emperord 2:37a61db8b04b 1700 Thread::wait(2);
emperord 2:37a61db8b04b 1701 EE_WriteVariable(VirtAddVarTab[4], (uint16_t)p5count);
emperord 2:37a61db8b04b 1702 }
emperord 2:37a61db8b04b 1703 if (( x >= p5onoff[0] && x <= p5onoff[1] ) && (y >= p5onoff[2] && y <= p5onoff[3])){
emperord 2:37a61db8b04b 1704 p5on = !p5on;
emperord 2:37a61db8b04b 1705 Thread::wait(200);
emperord 2:37a61db8b04b 1706 }
emperord 2:37a61db8b04b 1707 //Pump6
emperord 2:37a61db8b04b 1708 if (( x >= p6up[0] && x <= p6up[1] ) && (y >= p6up[2] && y <= p6up[3])){
emperord 2:37a61db8b04b 1709 p6count = p6count + touchsensativity;
emperord 2:37a61db8b04b 1710 Thread::wait(2);
emperord 2:37a61db8b04b 1711 EE_WriteVariable(VirtAddVarTab[5], (uint16_t)p6count);
emperord 2:37a61db8b04b 1712
emperord 2:37a61db8b04b 1713 }
emperord 2:37a61db8b04b 1714 if (( x >= p6down[0] && x <= p6down[1] ) && (y >= p6down[2] && y <= p6down[3])){
emperord 2:37a61db8b04b 1715 p6count = p6count - touchsensativity;
emperord 2:37a61db8b04b 1716 Thread::wait(2);
emperord 2:37a61db8b04b 1717 EE_WriteVariable(VirtAddVarTab[5], (uint16_t)p6count);
emperord 2:37a61db8b04b 1718 }
emperord 2:37a61db8b04b 1719 if (( x >= p6onoff[0] && x <= p6onoff[1] ) && (y >= p6onoff[2] && y <= p6onoff[3])){
emperord 2:37a61db8b04b 1720 p6on = !p6on;
emperord 2:37a61db8b04b 1721 Thread::wait(200);
emperord 2:37a61db8b04b 1722 }
emperord 2:37a61db8b04b 1723 //Pump7
emperord 2:37a61db8b04b 1724 if (( x >= p7up[0] && x <= p7up[1] ) && (y >= p7up[2] && y <= p7up[3])){
emperord 2:37a61db8b04b 1725 p7count = p7count + touchsensativity;
emperord 2:37a61db8b04b 1726 Thread::wait(2);
emperord 2:37a61db8b04b 1727 EE_WriteVariable(VirtAddVarTab[6], (uint16_t)p7count);
emperord 2:37a61db8b04b 1728
emperord 2:37a61db8b04b 1729 }
emperord 2:37a61db8b04b 1730 if (( x >= p7down[0] && x <= p7down[1] ) && (y >= p7down[2] && y <= p7down[3])){
emperord 2:37a61db8b04b 1731 p7count = p7count - touchsensativity;
emperord 2:37a61db8b04b 1732 Thread::wait(2);
emperord 2:37a61db8b04b 1733 EE_WriteVariable(VirtAddVarTab[6], (uint16_t)p7count);
emperord 2:37a61db8b04b 1734 }
emperord 2:37a61db8b04b 1735 if (( x >= p7onoff[0] && x <= p7onoff[1] ) && (y >= p7onoff[2] && y <= p7onoff[3])){
emperord 2:37a61db8b04b 1736 p7on = !p7on;
emperord 2:37a61db8b04b 1737 Thread::wait(200);
emperord 2:37a61db8b04b 1738 }
emperord 2:37a61db8b04b 1739
emperord 2:37a61db8b04b 1740 /* sprintf((char*)text, "Touch %d: x=%d y=%d ", idx+1, x, y);
emperord 2:37a61db8b04b 1741 lcd.DisplayStringAt(0, LINE(idx+1), (uint8_t *)&text, LEFT_MODE); */
emperord 2:37a61db8b04b 1742 }
emperord 2:37a61db8b04b 1743 lcd.DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_ORANGE);
emperord 2:37a61db8b04b 1744 } else {
emperord 2:37a61db8b04b 1745 if (!cleared) {
emperord 2:37a61db8b04b 1746 lcd.Clear(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1747 /* sprintf((char*)text, "Touches: 0");
emperord 2:37a61db8b04b 1748 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); */
emperord 2:37a61db8b04b 1749 cleared = 1;
emperord 2:37a61db8b04b 1750 }
emperord 2:37a61db8b04b 1751 }
emperord 2:37a61db8b04b 1752
emperord 2:37a61db8b04b 1753 }
emperord 2:37a61db8b04b 1754 }
emperord 2:37a61db8b04b 1755
emperord 2:37a61db8b04b 1756 ////////////
emperord 2:37a61db8b04b 1757 void screen2() {
emperord 2:37a61db8b04b 1758 while(1) {
emperord 2:37a61db8b04b 1759 if (p1count<0){p1count=0;}
emperord 2:37a61db8b04b 1760 if (p2count<0){p2count=0;}
emperord 2:37a61db8b04b 1761 if (p3count<0){p3count=0;}
emperord 2:37a61db8b04b 1762 if (p4count<0){p4count=0;}
emperord 2:37a61db8b04b 1763 if (p5count<0){p5count=0;}
emperord 2:37a61db8b04b 1764 if (p6count<0){p6count=0;}
emperord 2:37a61db8b04b 1765 if (p7count<0){p7count=0;}
emperord 2:37a61db8b04b 1766 //pump1.pulsewidth(p1count/750000);
emperord 2:37a61db8b04b 1767
emperord 2:37a61db8b04b 1768 if (p1on == true || p2on == true || p3on == true || p4on == true || p5on == true || p6on == true || p7on == true) { Aon = true; }
emperord 2:37a61db8b04b 1769 if (p1on == false && p2on == false && p3on == false && p4on == false && p5on == false && p6on == false && p7on == false) { Aon = false; }
emperord 2:37a61db8b04b 1770
emperord 2:37a61db8b04b 1771 if (writefail == 1) {
emperord 2:37a61db8b04b 1772 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1773 lcd.FillCircle(235,190,10);
emperord 2:37a61db8b04b 1774 }
emperord 2:37a61db8b04b 1775
emperord 2:37a61db8b04b 1776 //General Display
emperord 2:37a61db8b04b 1777 lcd.SetFont(&Font20);
emperord 2:37a61db8b04b 1778 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1779 sprintf((char*)textn1, "%0.1f ppb Ag+", Silver);
emperord 2:37a61db8b04b 1780 /* if (strcmp((char*)text1,(char*)textn1) != 0) {
emperord 2:37a61db8b04b 1781 sprintf((char*)text1, "%0.1f ppm Ag+", Silver);
emperord 2:37a61db8b04b 1782 lcd.ClearStringLine(4);
emperord 2:37a61db8b04b 1783 } */
emperord 2:37a61db8b04b 1784 lcd.DisplayStringAt(0, LINE(4), (uint8_t *)&textn1, CENTER_MODE);
emperord 2:37a61db8b04b 1785
emperord 2:37a61db8b04b 1786 lcd.SetFont(&Font20);
emperord 2:37a61db8b04b 1787 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1788 sprintf((char*)textn1, "%0.1f ppb Cu2+", Copper);
emperord 2:37a61db8b04b 1789 /* if (strcmp((char*)text1,(char*)textn1) != 0) {
emperord 2:37a61db8b04b 1790 sprintf((char*)text1, "%0.1f ppm Cu2+", Copper);
emperord 2:37a61db8b04b 1791 lcd.ClearStringLine(9);
emperord 2:37a61db8b04b 1792 } */
emperord 2:37a61db8b04b 1793 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)&textn1, CENTER_MODE);
emperord 2:37a61db8b04b 1794
emperord 2:37a61db8b04b 1795
emperord 2:37a61db8b04b 1796
emperord 2:37a61db8b04b 1797
emperord 2:37a61db8b04b 1798 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 1799 if (MODE == 0 && (strcmp((char*)text3,"Dark Reading") != 0)) {
emperord 2:37a61db8b04b 1800 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1801 sprintf((char*)text3, "Dark Reading");
emperord 2:37a61db8b04b 1802 }
emperord 2:37a61db8b04b 1803 if (MODE == 1 && (strcmp((char*)text3,"Zeroing") != 0)) {
emperord 2:37a61db8b04b 1804 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1805 sprintf((char*)text3, "Zeroing");
emperord 2:37a61db8b04b 1806 }
emperord 2:37a61db8b04b 1807 if (MODE == 2 && (strcmp((char*)text3,"Reading") != 0)) {
emperord 2:37a61db8b04b 1808 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1809 sprintf((char*)text3, "Reading");
emperord 2:37a61db8b04b 1810 }
emperord 2:37a61db8b04b 1811 if (MODE == 3 && (strcmp((char*)text3,"Priming") != 0)) {
emperord 2:37a61db8b04b 1812 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1813 sprintf((char*)text3, "Priming");
emperord 2:37a61db8b04b 1814 }
emperord 2:37a61db8b04b 1815 sprintf((char*)textn3, "Waiting%s", cyclestep);
emperord 2:37a61db8b04b 1816 if (MODE == 4 && (strcmp((char*)text3,(char*)textn3) != 0)) {
emperord 2:37a61db8b04b 1817 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1818 sprintf((char*)text3, "Waiting%s", cyclestep);
emperord 2:37a61db8b04b 1819 }
emperord 2:37a61db8b04b 1820 if (MODE == 5 && (strcmp((char*)text3,"Sampling") != 0)) {
emperord 2:37a61db8b04b 1821 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1822 sprintf((char*)text3, "Sampling");
emperord 2:37a61db8b04b 1823 }
emperord 2:37a61db8b04b 1824 if (MODE == 6 && (strcmp((char*)text3,"Washing") != 0)) {
emperord 2:37a61db8b04b 1825 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1826 sprintf((char*)text3, "Washing");
emperord 2:37a61db8b04b 1827 }
emperord 2:37a61db8b04b 1828 if (MODE == 7 && (strcmp((char*)text3,"Mixing") != 0)) {
emperord 2:37a61db8b04b 1829 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1830 sprintf((char*)text3, "Mixing");
emperord 2:37a61db8b04b 1831 }
emperord 2:37a61db8b04b 1832 if (MODE == 8 && (strcmp((char*)text3,"Ag Buffer Dosing") != 0)) {
emperord 2:37a61db8b04b 1833 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1834 sprintf((char*)text3, "Ag Buffer Dosing");
emperord 2:37a61db8b04b 1835 }
emperord 2:37a61db8b04b 1836 if (MODE == 9 && (strcmp((char*)text3,"Ag Indicator Dosing") != 0)) {
emperord 2:37a61db8b04b 1837 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1838 sprintf((char*)text3, "Ag Indicator Dosing");
emperord 2:37a61db8b04b 1839 }
emperord 2:37a61db8b04b 1840 if (MODE == 10 && (strcmp((char*)text3,"Cu Indicator Dosing") != 0)) {
emperord 2:37a61db8b04b 1841 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1842 sprintf((char*)text3, "Cu Indicator Dosing");
emperord 2:37a61db8b04b 1843 }
emperord 2:37a61db8b04b 1844 if (MODE == 11 && (strcmp((char*)text3,"Write Success") != 0)) {
emperord 2:37a61db8b04b 1845 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1846 sprintf((char*)text3, "Write Success");
emperord 2:37a61db8b04b 1847 }
emperord 2:37a61db8b04b 1848 if (MODE == 12 && (strcmp((char*)text3,"Level") != 0)) {
emperord 2:37a61db8b04b 1849 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1850 sprintf((char*)text3, "Level");
emperord 2:37a61db8b04b 1851 }
emperord 2:37a61db8b04b 1852 if (MODE == 13 && (strcmp((char*)text3,"Write Fail") != 0)) {
emperord 2:37a61db8b04b 1853 lcd.ClearStringLine(15);
emperord 2:37a61db8b04b 1854 sprintf((char*)text3, "Write Fail");
emperord 2:37a61db8b04b 1855 }
emperord 2:37a61db8b04b 1856
emperord 2:37a61db8b04b 1857 lcd.SetTextColor(LCD_COLOR_LIGHTRED);
emperord 2:37a61db8b04b 1858 lcd.DisplayStringAt(0, LINE(15), (uint8_t *)&text3, CENTER_MODE);
emperord 2:37a61db8b04b 1859
emperord 2:37a61db8b04b 1860 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1861 lcd.SetFont(&Font24);
emperord 2:37a61db8b04b 1862 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Cu/Ag Ion Monitor", CENTER_MODE);
emperord 2:37a61db8b04b 1863
emperord 2:37a61db8b04b 1864
emperord 2:37a61db8b04b 1865 //Prime Button
emperord 2:37a61db8b04b 1866 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 1867 if (pcount == 0) {
emperord 2:37a61db8b04b 1868 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1869 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1870 touchbutt = DrawButton(20, 2, 50, 15);
emperord 2:37a61db8b04b 1871 for( int i = 0 ; i < 4 ; ++i ){ primeon[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1872 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1873 lcd.DisplayStringAt(20, 2, (uint8_t *)"Prime", LEFT_MODE);
emperord 2:37a61db8b04b 1874 } else {
emperord 2:37a61db8b04b 1875 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1876 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 1877 touchbutt = DrawButton(20, 2, 50, 15);
emperord 2:37a61db8b04b 1878 for( int i = 0 ; i < 4 ; ++i ){ primeon[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1879 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1880 sprintf((char*)nus_buffer, "%d", (int)pcount);
emperord 2:37a61db8b04b 1881 lcd.DisplayStringAt(20, 2, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 1882 }
emperord 2:37a61db8b04b 1883
emperord 2:37a61db8b04b 1884
emperord 2:37a61db8b04b 1885 //Screen Mode
emperord 2:37a61db8b04b 1886 //lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1887 //lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 1888 touchbutt = DrawButton(230, 30, 50, 15);
emperord 2:37a61db8b04b 1889 for( int i = 0 ; i < 4 ; ++i ){ screenmode[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 1890
emperord 2:37a61db8b04b 1891
emperord 2:37a61db8b04b 1892
emperord 2:37a61db8b04b 1893
emperord 2:37a61db8b04b 1894 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 1895 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 1896 ts.GetState(&TS_State);
emperord 2:37a61db8b04b 1897 if (TS_State.touchDetected) {
emperord 2:37a61db8b04b 1898 // Clear lines corresponding to old touches coordinates
emperord 2:37a61db8b04b 1899 if (TS_State.touchDetected < prev_nb_touches) {
emperord 2:37a61db8b04b 1900 for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
emperord 2:37a61db8b04b 1901 lcd.ClearStringLine(idx);
emperord 2:37a61db8b04b 1902 }
emperord 2:37a61db8b04b 1903 }
emperord 2:37a61db8b04b 1904 prev_nb_touches = TS_State.touchDetected;
emperord 2:37a61db8b04b 1905
emperord 2:37a61db8b04b 1906 cleared = 0;
emperord 2:37a61db8b04b 1907
emperord 2:37a61db8b04b 1908 /* sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
emperord 2:37a61db8b04b 1909 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); */
emperord 2:37a61db8b04b 1910
emperord 2:37a61db8b04b 1911
bcostm 0:9933f7db9a9b 1912
bcostm 0:9933f7db9a9b 1913 for (idx = 0; idx < TS_State.touchDetected; idx++) {
bcostm 0:9933f7db9a9b 1914 x = TS_State.touchX[idx];
bcostm 0:9933f7db9a9b 1915 y = TS_State.touchY[idx];
emperord 2:37a61db8b04b 1916 double touchsensativity = 0.075; //(0.055 originaly)
emperord 2:37a61db8b04b 1917
emperord 2:37a61db8b04b 1918
emperord 2:37a61db8b04b 1919 if (( x >= primeon[0] && x <= primeon[1] ) && (y >= primeon[2] && y <= primeon[3])) {
emperord 2:37a61db8b04b 1920 thread2.terminate();
emperord 2:37a61db8b04b 1921 if (pcount != 0) {
emperord 2:37a61db8b04b 1922 pcount = 0;
emperord 2:37a61db8b04b 1923 thread2.start(takereading);
emperord 2:37a61db8b04b 1924 }
emperord 2:37a61db8b04b 1925 else {
emperord 2:37a61db8b04b 1926 ManMode = false;
emperord 2:37a61db8b04b 1927 Aon = false;
emperord 2:37a61db8b04b 1928 p1on = false;
emperord 2:37a61db8b04b 1929 p2on = false;
emperord 2:37a61db8b04b 1930 p3on = false;
emperord 2:37a61db8b04b 1931 p4on = false;
emperord 2:37a61db8b04b 1932 p5on = false;
emperord 2:37a61db8b04b 1933 p6on = false;
emperord 2:37a61db8b04b 1934 p7on = false;
emperord 2:37a61db8b04b 1935 thread2.start(prime);
emperord 2:37a61db8b04b 1936 }
emperord 2:37a61db8b04b 1937 Thread::wait(300);
emperord 2:37a61db8b04b 1938 }
bcostm 0:9933f7db9a9b 1939
emperord 2:37a61db8b04b 1940
emperord 2:37a61db8b04b 1941 if (( x >= Manonoff[0] && x <= Manonoff[1] ) && (y >= Manonoff[2] && y <= Manonoff[3])){
emperord 2:37a61db8b04b 1942 ManMode = !ManMode;
emperord 2:37a61db8b04b 1943 //motors[1]->wait_while_active();
emperord 2:37a61db8b04b 1944 if (ManMode == true) {
emperord 2:37a61db8b04b 1945 thread2.terminate();
emperord 2:37a61db8b04b 1946 p1on = false;
emperord 2:37a61db8b04b 1947 p2on = false;
emperord 2:37a61db8b04b 1948 p3on = false;
emperord 2:37a61db8b04b 1949 p4on = false;
emperord 2:37a61db8b04b 1950 p5on = false;
emperord 2:37a61db8b04b 1951 p6on = false;
emperord 2:37a61db8b04b 1952 p7on = false;
emperord 2:37a61db8b04b 1953 thread2.start(runpump);
emperord 2:37a61db8b04b 1954 thread3.terminate();
emperord 2:37a61db8b04b 1955 thread3.start(takereading);
emperord 2:37a61db8b04b 1956 } else {
emperord 2:37a61db8b04b 1957 thread2.terminate();
emperord 2:37a61db8b04b 1958 thread3.terminate();
emperord 2:37a61db8b04b 1959 thread3.start(takereading);
emperord 2:37a61db8b04b 1960 }
emperord 2:37a61db8b04b 1961 Thread::wait(200);
emperord 2:37a61db8b04b 1962 }
emperord 2:37a61db8b04b 1963
emperord 2:37a61db8b04b 1964 if (( x >= CuMODEonoff[0] && x <= CuMODEonoff[1] ) && (y >= CuMODEonoff[2] && y <= CuMODEonoff[3])){ CuMODE = !CuMODE; }
emperord 2:37a61db8b04b 1965 if (( x >= AgMODEonoff[0] && x <= AgMODEonoff[1] ) && (y >= AgMODEonoff[2] && y <= AgMODEonoff[3])){ AgMODE = !AgMODE; }
emperord 2:37a61db8b04b 1966
emperord 2:37a61db8b04b 1967 if (( x >= screenmode[0] && x <= screenmode[1] ) && (y >= screenmode[2] && y <= screenmode[3])){
emperord 2:37a61db8b04b 1968 screenstate = screenstate + 1;
emperord 2:37a61db8b04b 1969 if (screenstate > 2){ screenstate = 0; }
emperord 2:37a61db8b04b 1970 Thread::wait(200);
emperord 2:37a61db8b04b 1971 EE_WriteVariable(VirtAddVarTab[7], (uint16_t)screenstate);
emperord 2:37a61db8b04b 1972 screencycle();
emperord 2:37a61db8b04b 1973 return;
emperord 2:37a61db8b04b 1974 }
emperord 2:37a61db8b04b 1975
emperord 2:37a61db8b04b 1976
emperord 2:37a61db8b04b 1977 if (( x >= Aonoff[0] && x <= Aonoff[1] ) && (y >= Aonoff[2] && y <= Aonoff[3])){
emperord 2:37a61db8b04b 1978 Aon = !Aon;
emperord 2:37a61db8b04b 1979 if (Aon == true) {
emperord 2:37a61db8b04b 1980 p1on = true;
emperord 2:37a61db8b04b 1981 p2on = true;
emperord 2:37a61db8b04b 1982 p3on = true;
emperord 2:37a61db8b04b 1983 p4on = true;
emperord 2:37a61db8b04b 1984 p5on = true;
emperord 2:37a61db8b04b 1985 p6on = true;
emperord 2:37a61db8b04b 1986 p7on = true;
emperord 2:37a61db8b04b 1987 } else {
emperord 2:37a61db8b04b 1988 p1on = false;
emperord 2:37a61db8b04b 1989 p2on = false;
emperord 2:37a61db8b04b 1990 p3on = false;
emperord 2:37a61db8b04b 1991 p4on = false;
emperord 2:37a61db8b04b 1992 p5on = false;
emperord 2:37a61db8b04b 1993 p6on = false;
emperord 2:37a61db8b04b 1994 p7on = false;
emperord 2:37a61db8b04b 1995 }
emperord 2:37a61db8b04b 1996 Thread::wait(200);
emperord 2:37a61db8b04b 1997 //EE_WriteVariable(VirtAddVarTab[0], (uint16_t)p1count);
emperord 2:37a61db8b04b 1998 }
emperord 2:37a61db8b04b 1999
emperord 2:37a61db8b04b 2000
emperord 2:37a61db8b04b 2001
emperord 2:37a61db8b04b 2002 /* sprintf((char*)text, "Touch %d: x=%d y=%d ", idx+1, x, y);
emperord 2:37a61db8b04b 2003 lcd.DisplayStringAt(0, LINE(idx+1), (uint8_t *)&text, LEFT_MODE); */
emperord 2:37a61db8b04b 2004 }
bcostm 0:9933f7db9a9b 2005 lcd.DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_ORANGE);
bcostm 0:9933f7db9a9b 2006 } else {
bcostm 0:9933f7db9a9b 2007 if (!cleared) {
emperord 2:37a61db8b04b 2008 lcd.Clear(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2009 /* sprintf((char*)text, "Touches: 0");
emperord 2:37a61db8b04b 2010 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); */
bcostm 0:9933f7db9a9b 2011 cleared = 1;
bcostm 0:9933f7db9a9b 2012 }
bcostm 0:9933f7db9a9b 2013 }
emperord 2:37a61db8b04b 2014
bcostm 0:9933f7db9a9b 2015 }
bcostm 0:9933f7db9a9b 2016 }
emperord 2:37a61db8b04b 2017
emperord 2:37a61db8b04b 2018 void screen3() {
emperord 2:37a61db8b04b 2019 while(1) {
emperord 2:37a61db8b04b 2020 if (d1count<0){d1count=0;}
emperord 2:37a61db8b04b 2021 if (d2count<0){d2count=0;}
emperord 2:37a61db8b04b 2022 if (d3count<0){d3count=0;}
emperord 2:37a61db8b04b 2023 if (d4count<0){d4count=0;}
emperord 2:37a61db8b04b 2024 if (d5count<0){d5count=0;}
emperord 2:37a61db8b04b 2025 if (d6count<0){d6count=0;}
emperord 2:37a61db8b04b 2026
emperord 2:37a61db8b04b 2027
emperord 2:37a61db8b04b 2028
emperord 2:37a61db8b04b 2029
emperord 2:37a61db8b04b 2030 /* //Prime Button
emperord 2:37a61db8b04b 2031 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2032 if (pcount == 0) {
emperord 2:37a61db8b04b 2033 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2034 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2035 touchbutt = DrawButton(20, 2, 50, 15);
emperord 2:37a61db8b04b 2036 for( int i = 0 ; i < 4 ; ++i ){ primeon[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 2037 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2038 lcd.DisplayStringAt(20, 2, (uint8_t *)"Prime", LEFT_MODE);
emperord 2:37a61db8b04b 2039 } else {
emperord 2:37a61db8b04b 2040 lcd.SetTextColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 2041 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 2042 touchbutt = DrawButton(20, 2, 50, 15);
emperord 2:37a61db8b04b 2043 for( int i = 0 ; i < 4 ; ++i ){ primeon[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 2044 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2045 sprintf((char*)nus_buffer, "%d", (int)pcount);
emperord 2:37a61db8b04b 2046 lcd.DisplayStringAt(20, 2, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 2047 } */
emperord 2:37a61db8b04b 2048
emperord 2:37a61db8b04b 2049 //Screen Mode
emperord 2:37a61db8b04b 2050 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2051 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2052 touchbutt = DrawButton(230, 2, 50, 15);
emperord 2:37a61db8b04b 2053 for( int i = 0 ; i < 4 ; ++i ){ screenmode[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 2054 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2055 lcd.DisplayStringAt(230, 2, (uint8_t *)"Exit", LEFT_MODE);
emperord 2:37a61db8b04b 2056
emperord 2:37a61db8b04b 2057
emperord 2:37a61db8b04b 2058
emperord 2:37a61db8b04b 2059 //Save
emperord 2:37a61db8b04b 2060 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2061 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2062 lcd.SetBackColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2063 touchbutt = DrawButton(90, 2, 50, 15);
emperord 2:37a61db8b04b 2064 for( int i = 0 ; i < 4 ; ++i ){ savedate[ i ] = touchbutt[ i ]; }
emperord 2:37a61db8b04b 2065 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2066 lcd.DisplayStringAt(90, 2, (uint8_t *)"Save", LEFT_MODE);
emperord 2:37a61db8b04b 2067
emperord 2:37a61db8b04b 2068
emperord 2:37a61db8b04b 2069 get_time(&dt);
emperord 2:37a61db8b04b 2070 sprintf((char*)currenttime, "%02d/%02d/%04d %02d:%02d:%02d\n", dt.mm, dt.d, 2000 + dt.y, dt.h, dt.m, dt.s);
emperord 2:37a61db8b04b 2071 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2072 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2073 lcd.DisplayStringAt(0, LINE(13), (uint8_t *)currenttime, CENTER_MODE);
emperord 2:37a61db8b04b 2074
emperord 2:37a61db8b04b 2075
emperord 2:37a61db8b04b 2076
emperord 2:37a61db8b04b 2077
emperord 2:37a61db8b04b 2078 //Month
emperord 2:37a61db8b04b 2079 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 2080 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2081 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2082 lcd.DisplayStringAt(10, 30, (uint8_t *)"Month", LEFT_MODE);
emperord 2:37a61db8b04b 2083 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2084 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 2085 toucharrow = DrawArrow(30,50,1,2);
emperord 2:37a61db8b04b 2086 for( int i = 0 ; i < 4 ; ++i ){ d1up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2087 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2088 toucharrow = DrawArrow(30,150,2,2);
emperord 2:37a61db8b04b 2089 for( int i = 0 ; i < 4 ; ++i ){ d1down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2090 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2091 sprintf((char*)nus_buffer, "%d", (int)d1count);
emperord 2:37a61db8b04b 2092 lcd.DisplayStringAt(30, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 2093
emperord 2:37a61db8b04b 2094
emperord 2:37a61db8b04b 2095
emperord 2:37a61db8b04b 2096 //Day
emperord 2:37a61db8b04b 2097 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 2098 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2099 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2100 lcd.DisplayStringAt(80, 30, (uint8_t *)"Day", LEFT_MODE);
emperord 2:37a61db8b04b 2101 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2102 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 2103 toucharrow = DrawArrow(100,50,1,2);
emperord 2:37a61db8b04b 2104 for( int i = 0 ; i < 4 ; ++i ){ d2up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2105 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2106 toucharrow = DrawArrow(100,150,2,2);
emperord 2:37a61db8b04b 2107 for( int i = 0 ; i < 4 ; ++i ){ d2down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2108 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2109 sprintf((char*)nus_buffer, "%d", (int)d2count);
emperord 2:37a61db8b04b 2110 lcd.DisplayStringAt(100, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 2111
emperord 2:37a61db8b04b 2112
emperord 2:37a61db8b04b 2113
emperord 2:37a61db8b04b 2114 //Year
emperord 2:37a61db8b04b 2115 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 2116 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2117 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2118 lcd.DisplayStringAt(150, 30, (uint8_t *)"Year", LEFT_MODE);
emperord 2:37a61db8b04b 2119 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2120 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 2121 toucharrow = DrawArrow(170,50,1,2);
emperord 2:37a61db8b04b 2122 for( int i = 0 ; i < 4 ; ++i ){ d3up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2123 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2124 toucharrow = DrawArrow(170,150,2,2);
emperord 2:37a61db8b04b 2125 for( int i = 0 ; i < 4 ; ++i ){ d3down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2126 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2127 sprintf((char*)nus_buffer, "%d", (int)d3count);
emperord 2:37a61db8b04b 2128 lcd.DisplayStringAt(170, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 2129
emperord 2:37a61db8b04b 2130
emperord 2:37a61db8b04b 2131
emperord 2:37a61db8b04b 2132
emperord 2:37a61db8b04b 2133
emperord 2:37a61db8b04b 2134 //Hour
emperord 2:37a61db8b04b 2135 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 2136 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2137 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2138 lcd.DisplayStringAt(220, 30, (uint8_t *)"Hour", LEFT_MODE);
emperord 2:37a61db8b04b 2139 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2140 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 2141 toucharrow = DrawArrow(240,50,1,2);
emperord 2:37a61db8b04b 2142 for( int i = 0 ; i < 4 ; ++i ){ d4up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2143 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2144 toucharrow = DrawArrow(240,150,2,2);
emperord 2:37a61db8b04b 2145 for( int i = 0 ; i < 4 ; ++i ){ d4down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2146 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2147 sprintf((char*)nus_buffer, "%d", (int)d4count);
emperord 2:37a61db8b04b 2148 lcd.DisplayStringAt(240, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 2149
emperord 2:37a61db8b04b 2150
emperord 2:37a61db8b04b 2151
emperord 2:37a61db8b04b 2152 //Min
emperord 2:37a61db8b04b 2153 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 2154 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2155 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2156 lcd.DisplayStringAt(285, 30, (uint8_t *)"Min", LEFT_MODE);
emperord 2:37a61db8b04b 2157 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2158 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 2159 toucharrow = DrawArrow(310,50,1,2);
emperord 2:37a61db8b04b 2160 for( int i = 0 ; i < 4 ; ++i ){ d5up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2161 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2162 toucharrow = DrawArrow(310,150,2,2);
emperord 2:37a61db8b04b 2163 for( int i = 0 ; i < 4 ; ++i ){ d5down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2164 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2165 sprintf((char*)nus_buffer, "%d", (int)d5count);
emperord 2:37a61db8b04b 2166 lcd.DisplayStringAt(310, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 2167
emperord 2:37a61db8b04b 2168
emperord 2:37a61db8b04b 2169 //Interval
emperord 2:37a61db8b04b 2170 lcd.SetFont(&Font16);
emperord 2:37a61db8b04b 2171 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2172 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2173 lcd.DisplayStringAt(360, 30, (uint8_t *)"Interval(h)", LEFT_MODE);
emperord 2:37a61db8b04b 2174 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2175 lcd.SetTextColor(LCD_COLOR_YELLOW);
emperord 2:37a61db8b04b 2176 toucharrow = DrawArrow(380,50,1,2);
emperord 2:37a61db8b04b 2177 for( int i = 0 ; i < 4 ; ++i ){ d6up[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2178 lcd.SetTextColor(LCD_COLOR_GREEN);
emperord 2:37a61db8b04b 2179 toucharrow = DrawArrow(380,150,2,2);
emperord 2:37a61db8b04b 2180 for( int i = 0 ; i < 4 ; ++i ){ d6down[ i ] = toucharrow[ i ]; }
emperord 2:37a61db8b04b 2181 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2182 sprintf((char*)nus_buffer, "%d", (int)d6count);
emperord 2:37a61db8b04b 2183 lcd.DisplayStringAt(380, 95, (uint8_t *)nus_buffer, LEFT_MODE);
emperord 2:37a61db8b04b 2184
emperord 2:37a61db8b04b 2185
emperord 2:37a61db8b04b 2186
emperord 2:37a61db8b04b 2187 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2188 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);
emperord 2:37a61db8b04b 2189 ts.GetState(&TS_State);
emperord 2:37a61db8b04b 2190 if (TS_State.touchDetected) {
emperord 2:37a61db8b04b 2191 // Clear lines corresponding to old touches coordinates
emperord 2:37a61db8b04b 2192 if (TS_State.touchDetected < prev_nb_touches) {
emperord 2:37a61db8b04b 2193 for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
emperord 2:37a61db8b04b 2194 lcd.ClearStringLine(idx);
emperord 2:37a61db8b04b 2195 }
emperord 2:37a61db8b04b 2196 }
emperord 2:37a61db8b04b 2197 prev_nb_touches = TS_State.touchDetected;
emperord 2:37a61db8b04b 2198
emperord 2:37a61db8b04b 2199 cleared = 0;
emperord 2:37a61db8b04b 2200
emperord 2:37a61db8b04b 2201 /* sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
emperord 2:37a61db8b04b 2202 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); */
emperord 2:37a61db8b04b 2203
emperord 2:37a61db8b04b 2204
emperord 2:37a61db8b04b 2205
emperord 2:37a61db8b04b 2206 for (idx = 0; idx < TS_State.touchDetected; idx++) {
emperord 2:37a61db8b04b 2207 x = TS_State.touchX[idx];
emperord 2:37a61db8b04b 2208 y = TS_State.touchY[idx];
emperord 2:37a61db8b04b 2209 double touchsensativity = 0.075; //(0.055 originaly)
emperord 2:37a61db8b04b 2210
emperord 2:37a61db8b04b 2211
emperord 2:37a61db8b04b 2212
emperord 2:37a61db8b04b 2213
emperord 2:37a61db8b04b 2214 if (( x >= screenmode[0] && x <= screenmode[1] ) && (y >= screenmode[2] && y <= screenmode[3])){
emperord 2:37a61db8b04b 2215 screenstate = screenstate + 1;
emperord 2:37a61db8b04b 2216 if (screenstate > 2){ screenstate = 0; }
emperord 2:37a61db8b04b 2217 Thread::wait(200);
emperord 2:37a61db8b04b 2218 EE_WriteVariable(VirtAddVarTab[7], (uint16_t)screenstate);
emperord 2:37a61db8b04b 2219 screencycle();
emperord 2:37a61db8b04b 2220 return;
emperord 2:37a61db8b04b 2221 }
emperord 2:37a61db8b04b 2222
emperord 2:37a61db8b04b 2223 if (( x >= savedate[0] && x <= savedate[1] ) && (y >= savedate[2] && y <= savedate[3])){ setdatetime(); }
emperord 2:37a61db8b04b 2224
emperord 2:37a61db8b04b 2225 //Month
emperord 2:37a61db8b04b 2226 if (( x >= d1up[0] && x <= d1up[1] ) && (y >= d1up[2] && y <= d1up[3])){
emperord 2:37a61db8b04b 2227 d1count = d1count + touchsensativity;
emperord 2:37a61db8b04b 2228 }
emperord 2:37a61db8b04b 2229 if (( x >= d1down[0] && x <= d1down[1] ) && (y >= d1down[2] && y <= d1down[3])){
emperord 2:37a61db8b04b 2230 d1count = d1count - touchsensativity;
emperord 2:37a61db8b04b 2231 }
emperord 2:37a61db8b04b 2232
emperord 2:37a61db8b04b 2233 //Day
emperord 2:37a61db8b04b 2234 if (( x >= d2up[0] && x <= d2up[1] ) && (y >= d2up[2] && y <= d2up[3])){
emperord 2:37a61db8b04b 2235 d2count = d2count + touchsensativity;
emperord 2:37a61db8b04b 2236
emperord 2:37a61db8b04b 2237 }
emperord 2:37a61db8b04b 2238 if (( x >= d2down[0] && x <= d2down[1] ) && (y >= d2down[2] && y <= d2down[3])){
emperord 2:37a61db8b04b 2239 d2count = d2count - touchsensativity;
emperord 2:37a61db8b04b 2240
emperord 2:37a61db8b04b 2241 }
emperord 2:37a61db8b04b 2242
emperord 2:37a61db8b04b 2243 //year
emperord 2:37a61db8b04b 2244 if (( x >= d3up[0] && x <= d3up[1] ) && (y >= d3up[2] && y <= d3up[3])){
emperord 2:37a61db8b04b 2245 d3count = d3count + touchsensativity;
emperord 2:37a61db8b04b 2246
emperord 2:37a61db8b04b 2247 }
emperord 2:37a61db8b04b 2248 if (( x >= d3down[0] && x <= d3down[1] ) && (y >= d3down[2] && y <= d3down[3])){
emperord 2:37a61db8b04b 2249 d3count = d3count - touchsensativity;
emperord 2:37a61db8b04b 2250 }
emperord 2:37a61db8b04b 2251
emperord 2:37a61db8b04b 2252 //hour
emperord 2:37a61db8b04b 2253 if (( x >= d4up[0] && x <= d4up[1] ) && (y >= d4up[2] && y <= d4up[3])){
emperord 2:37a61db8b04b 2254 d4count = d4count + touchsensativity;
emperord 2:37a61db8b04b 2255
emperord 2:37a61db8b04b 2256 }
emperord 2:37a61db8b04b 2257 if (( x >= d4down[0] && x <= d4down[1] ) && (y >= d4down[2] && y <= d4down[3])){
emperord 2:37a61db8b04b 2258 d4count = d4count - touchsensativity;
emperord 2:37a61db8b04b 2259 }
emperord 2:37a61db8b04b 2260
emperord 2:37a61db8b04b 2261 //Min
emperord 2:37a61db8b04b 2262 if (( x >= d5up[0] && x <= d5up[1] ) && (y >= d5up[2] && y <= d5up[3])){
emperord 2:37a61db8b04b 2263 d5count = d5count + touchsensativity;
emperord 2:37a61db8b04b 2264 }
emperord 2:37a61db8b04b 2265 if (( x >= d5down[0] && x <= d5down[1] ) && (y >= d5down[2] && y <= d5down[3])){
emperord 2:37a61db8b04b 2266 d5count = d5count - touchsensativity;
emperord 2:37a61db8b04b 2267 }
emperord 2:37a61db8b04b 2268
emperord 2:37a61db8b04b 2269 //Interval
emperord 2:37a61db8b04b 2270 if (( x >= d6up[0] && x <= d6up[1] ) && (y >= d6up[2] && y <= d6up[3])){
emperord 2:37a61db8b04b 2271 d6count = d6count + touchsensativity;
emperord 2:37a61db8b04b 2272 Thread::wait(2);
emperord 2:37a61db8b04b 2273 EE_WriteVariable(VirtAddVarTab[8], (uint16_t)d6count);
emperord 2:37a61db8b04b 2274 }
emperord 2:37a61db8b04b 2275 if (( x >= d6down[0] && x <= d6down[1] ) && (y >= d6down[2] && y <= d6down[3])){
emperord 2:37a61db8b04b 2276 d6count = d6count - touchsensativity;
emperord 2:37a61db8b04b 2277 Thread::wait(2);
emperord 2:37a61db8b04b 2278 EE_WriteVariable(VirtAddVarTab[8], (uint16_t)d6count);
emperord 2:37a61db8b04b 2279 }
emperord 2:37a61db8b04b 2280
emperord 2:37a61db8b04b 2281
emperord 2:37a61db8b04b 2282 /* sprintf((char*)text, "Touch %d: x=%d y=%d ", idx+1, x, y);
emperord 2:37a61db8b04b 2283 lcd.DisplayStringAt(0, LINE(idx+1), (uint8_t *)&text, LEFT_MODE); */
emperord 2:37a61db8b04b 2284 }
emperord 2:37a61db8b04b 2285 lcd.DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_ORANGE);
emperord 2:37a61db8b04b 2286 } else {
emperord 2:37a61db8b04b 2287 if (!cleared) {
emperord 2:37a61db8b04b 2288 lcd.Clear(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2289 /* sprintf((char*)text, "Touches: 0");
emperord 2:37a61db8b04b 2290 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); */
emperord 2:37a61db8b04b 2291 cleared = 1;
emperord 2:37a61db8b04b 2292 }
emperord 2:37a61db8b04b 2293 }
emperord 2:37a61db8b04b 2294
emperord 2:37a61db8b04b 2295 }
emperord 2:37a61db8b04b 2296 }
emperord 2:37a61db8b04b 2297
emperord 2:37a61db8b04b 2298
emperord 2:37a61db8b04b 2299
emperord 2:37a61db8b04b 2300 void screencycle() {
emperord 2:37a61db8b04b 2301 if (screenstate == 1) {screen();}
emperord 2:37a61db8b04b 2302 if (screenstate == 0) {screen2();}
emperord 2:37a61db8b04b 2303 if (screenstate == 2) {screen3();}
emperord 2:37a61db8b04b 2304 }
emperord 2:37a61db8b04b 2305 /////////////
emperord 2:37a61db8b04b 2306
emperord 2:37a61db8b04b 2307 int main()
emperord 2:37a61db8b04b 2308 {
emperord 2:37a61db8b04b 2309 i2c.frequency(100000);
emperord 2:37a61db8b04b 2310 set_ch(1);
emperord 2:37a61db8b04b 2311 pc.baud(9600);
emperord 2:37a61db8b04b 2312 LED515.write(0.0);
emperord 2:37a61db8b04b 2313 LED480.write(0.0);
emperord 2:37a61db8b04b 2314 /* sd.mount();
emperord 2:37a61db8b04b 2315 FILE *fp = fopen("/sd/Readings.txt", "w");
emperord 2:37a61db8b04b 2316 if (fp == NULL)
emperord 2:37a61db8b04b 2317 {
emperord 2:37a61db8b04b 2318 fprintf(stderr, "Open error for writing!!\r\n");
emperord 2:37a61db8b04b 2319 while (true) {}
emperord 2:37a61db8b04b 2320 }
emperord 2:37a61db8b04b 2321 fprintf(fp, "Hello!\n");
emperord 2:37a61db8b04b 2322 fprintf(fp, "Example of writing and reading of text file.\n");
emperord 2:37a61db8b04b 2323 fclose(fp); */
emperord 2:37a61db8b04b 2324 //Setup LED515
emperord 2:37a61db8b04b 2325 //LED515.period(-1.0f); // 4 second period
emperord 2:37a61db8b04b 2326 //LED515.write(0); // 50% duty cycle, relative to period
emperord 2:37a61db8b04b 2327 HAL_FLASH_Unlock();
emperord 2:37a61db8b04b 2328 EE_Init();
emperord 2:37a61db8b04b 2329 //pump1
emperord 2:37a61db8b04b 2330 EE_ReadVariable(VirtAddVarTab[0], &VarDataTab[0]);
emperord 2:37a61db8b04b 2331 p1count = (double)VarDataTab[0];
emperord 2:37a61db8b04b 2332 //pump2
emperord 2:37a61db8b04b 2333 EE_ReadVariable(VirtAddVarTab[1], &VarDataTab[1]);
emperord 2:37a61db8b04b 2334 p2count = (double)VarDataTab[1];
emperord 2:37a61db8b04b 2335 //pump3
emperord 2:37a61db8b04b 2336 EE_ReadVariable(VirtAddVarTab[2], &VarDataTab[2]);
emperord 2:37a61db8b04b 2337 p3count = (double)VarDataTab[2];
emperord 2:37a61db8b04b 2338 //pump4
emperord 2:37a61db8b04b 2339 EE_ReadVariable(VirtAddVarTab[3], &VarDataTab[3]);
emperord 2:37a61db8b04b 2340 p4count = (double)VarDataTab[3];
emperord 2:37a61db8b04b 2341 //Sole5
emperord 2:37a61db8b04b 2342 EE_ReadVariable(VirtAddVarTab[4], &VarDataTab[4]);
emperord 2:37a61db8b04b 2343 p5count = (double)VarDataTab[4];
emperord 2:37a61db8b04b 2344 //Pump6
emperord 2:37a61db8b04b 2345 EE_ReadVariable(VirtAddVarTab[5], &VarDataTab[5]);
emperord 2:37a61db8b04b 2346 p6count = (double)VarDataTab[5];
emperord 2:37a61db8b04b 2347 //Pump7
emperord 2:37a61db8b04b 2348 EE_ReadVariable(VirtAddVarTab[6], &VarDataTab[6]);
emperord 2:37a61db8b04b 2349 p7count = (double)VarDataTab[6];
emperord 2:37a61db8b04b 2350 //Screen
emperord 2:37a61db8b04b 2351 EE_ReadVariable(VirtAddVarTab[7], &VarDataTab[7]);
emperord 2:37a61db8b04b 2352 screenstate = (int)VarDataTab[7];
emperord 2:37a61db8b04b 2353 //Interval
emperord 2:37a61db8b04b 2354 EE_ReadVariable(VirtAddVarTab[8], &VarDataTab[8]);
emperord 2:37a61db8b04b 2355 d6count = (int)VarDataTab[8];
emperord 2:37a61db8b04b 2356
emperord 2:37a61db8b04b 2357 //Draw WolfMan
emperord 2:37a61db8b04b 2358 /* lcd.Clear(LCD_COLOR_RED);
emperord 2:37a61db8b04b 2359 lcd.SetTextColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2360 lcd.SetBackColor(LCD_COLOR_RED);
emperord 2:37a61db8b04b 2361 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"WolfMan", RIGHT_MODE);
emperord 2:37a61db8b04b 2362 lcd.SetTextColor(LCD_COLOR_LIGHTBLUE);*/
emperord 2:37a61db8b04b 2363 lcd.Clear(LCD_COLOR_WHITE);
emperord 2:37a61db8b04b 2364 lcd.SetBackColor(LCD_COLOR_WHITE);
emperord 2:37a61db8b04b 2365 lcd.DrawBitmap(150,25,(uint8_t *)hfl);
emperord 2:37a61db8b04b 2366
emperord 2:37a61db8b04b 2367 //motors[1]->reset_device();
emperord 2:37a61db8b04b 2368 wait(2);
emperord 2:37a61db8b04b 2369
emperord 2:37a61db8b04b 2370 FATFS_LinkDriver(&SD_Driver, SDPath);
emperord 2:37a61db8b04b 2371 ress = f_mount(&SDFatFs, (TCHAR const*)SDPath, 0);
emperord 2:37a61db8b04b 2372 Thread::wait(200);
emperord 2:37a61db8b04b 2373 if(ress!= FR_OK){ pc.printf("Failed to mount SD\n"); }
emperord 2:37a61db8b04b 2374
emperord 2:37a61db8b04b 2375 saveit();
emperord 2:37a61db8b04b 2376 ts.Init(lcd.GetXSize(), lcd.GetYSize());
emperord 2:37a61db8b04b 2377 lcd.SetFont(&Font12);
emperord 2:37a61db8b04b 2378 lcd.SetBackColor(LCD_COLOR_BLACK);
emperord 2:37a61db8b04b 2379 lcd.SetTextColor(LCD_COLOR_WHITE);
emperord 2:37a61db8b04b 2380 thread.start(screencycle);
emperord 2:37a61db8b04b 2381 sprintf((char*)cyclestep, "");
emperord 2:37a61db8b04b 2382 //reprime();
emperord 2:37a61db8b04b 2383 LED515.period(1.0/10000);
emperord 2:37a61db8b04b 2384 LED480.period(1.0/10000);
emperord 2:37a61db8b04b 2385 thread3.start(takereading);
emperord 2:37a61db8b04b 2386
emperord 2:37a61db8b04b 2387
emperord 2:37a61db8b04b 2388 }
emperord 2:37a61db8b04b 2389