Remote inc coolant nozzle control program

Dependencies:   mbed reScale USBDevice

Dependents:   Nozzle_inputs Nozzle_display

Committer:
BETZtechnik
Date:
Fri Mar 29 06:16:58 2019 +0000
Revision:
12:4ad111112853
Parent:
10:84ea3ec0660d
Child:
13:d2c8a78cea31
changed version to 1.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
BETZtechnik 0:09419d572e90 1 #include "mbed.h"
BETZtechnik 0:09419d572e90 2 #include "Adafruit_ST7735.h"
BETZtechnik 1:e8452b75301e 3 #include "RPG.h"
BETZtechnik 0:09419d572e90 4 #include "reScale.h"
BETZtechnik 0:09419d572e90 5 #include "Ee24xx08.h"
BETZtechnik 10:84ea3ec0660d 6 #include "mRotaryEncoder.h"
BETZtechnik 0:09419d572e90 7
BETZtechnik 0:09419d572e90 8
BETZtechnik 0:09419d572e90 9 // DISPLAY INIT:
BETZtechnik 0:09419d572e90 10
BETZtechnik 0:09419d572e90 11 #define BLACK 0x0000
BETZtechnik 0:09419d572e90 12 #define BLUE 0x001F
BETZtechnik 0:09419d572e90 13 #define RED 0xF800
BETZtechnik 0:09419d572e90 14 #define GREEN 0x07E0
BETZtechnik 0:09419d572e90 15 #define CYAN 0x07FF
BETZtechnik 0:09419d572e90 16 #define MAGENTA 0xF81F
BETZtechnik 0:09419d572e90 17 #define YELLOW 0xFFE0
BETZtechnik 0:09419d572e90 18 #define WHITE 0xFFFF
BETZtechnik 0:09419d572e90 19
BETZtechnik 10:84ea3ec0660d 20 /* EEPROM Memory map:
BETZtechnik 10:84ea3ec0660d 21
BETZtechnik 10:84ea3ec0660d 22 1 - 50: N1 angles
BETZtechnik 10:84ea3ec0660d 23 51 - 100: Settings
BETZtechnik 10:84ea3ec0660d 24 101- 150: N2 angles
BETZtechnik 10:84ea3ec0660d 25 151- 200: Twitch settings
BETZtechnik 10:84ea3ec0660d 26 200- 250: unused
BETZtechnik 10:84ea3ec0660d 27 */
BETZtechnik 10:84ea3ec0660d 28
BETZtechnik 1:e8452b75301e 29 #define currentToolAddress 51
BETZtechnik 1:e8452b75301e 30 #define numToolsAddress 52
BETZtechnik 1:e8452b75301e 31 #define numNozAddress 53
BETZtechnik 10:84ea3ec0660d 32 #define versionAddress 54 // 0= basic, 1=pro
BETZtechnik 10:84ea3ec0660d 33 #define syncAddress 55
BETZtechnik 10:84ea3ec0660d 34 #define n1DirAddress 56
BETZtechnik 10:84ea3ec0660d 35 #define n2DirAddress 57
BETZtechnik 10:84ea3ec0660d 36
BETZtechnik 10:84ea3ec0660d 37
BETZtechnik 0:09419d572e90 38
BETZtechnik 0:09419d572e90 39
BETZtechnik 1:e8452b75301e 40 //DigitalOut myled(P1_13);
BETZtechnik 1:e8452b75301e 41
BETZtechnik 0:09419d572e90 42
BETZtechnik 0:09419d572e90 43 I2C iic(P0_5, P0_4);
BETZtechnik 9:69155b34efd6 44
BETZtechnik 1:e8452b75301e 45
BETZtechnik 1:e8452b75301e 46 DigitalOut dir(P0_21);
BETZtechnik 1:e8452b75301e 47
BETZtechnik 0:09419d572e90 48
BETZtechnik 0:09419d572e90 49 Ee24xx08 eeprom(&iic);
BETZtechnik 0:09419d572e90 50
BETZtechnik 1:e8452b75301e 51 Adafruit_ST7735 tft(P0_9, P0_8, P0_6, P0_2, P0_22, P0_7); // MOSI, MISO, SCLK, SSEL, TFT_DC, TFT_RST
BETZtechnik 0:09419d572e90 52
BETZtechnik 10:84ea3ec0660d 53 int maxServo = 2500;
BETZtechnik 10:84ea3ec0660d 54 int minServo = 500;
BETZtechnik 10:84ea3ec0660d 55 reScale servo1Scale(-90,90,minServo,maxServo); //
BETZtechnik 0:09419d572e90 56
BETZtechnik 1:e8452b75301e 57 PwmOut myServo(P1_13); //display board
BETZtechnik 1:e8452b75301e 58 //PwmOut myServo(D4);
BETZtechnik 0:09419d572e90 59
BETZtechnik 1:e8452b75301e 60 //DigitalIn tUpButton(P2_11);
BETZtechnik 1:e8452b75301e 61 //DigitalIn tDownButton(P2_12);
BETZtechnik 1:e8452b75301e 62 DigitalIn encoderFalseButton(P0_23); // FALSE!!! push button of knob
BETZtechnik 1:e8452b75301e 63 DigitalIn encoderButton(P0_20); // push button of knob
BETZtechnik 1:e8452b75301e 64 DigitalIn backButton(P0_15); // back button
BETZtechnik 10:84ea3ec0660d 65 DigitalIn aButton(P0_1); // ISP and A button
BETZtechnik 0:09419d572e90 66
BETZtechnik 1:e8452b75301e 67 Timer t;
BETZtechnik 10:84ea3ec0660d 68 Timer tw;
BETZtechnik 1:e8452b75301e 69 int lastBackButton;
BETZtechnik 1:e8452b75301e 70 int lastDownButton;
BETZtechnik 1:e8452b75301e 71 int lastEncoderButton;
BETZtechnik 1:e8452b75301e 72
BETZtechnik 10:84ea3ec0660d 73
BETZtechnik 10:84ea3ec0660d 74
BETZtechnik 1:e8452b75301e 75 int dirt = 0;
BETZtechnik 0:09419d572e90 76
BETZtechnik 0:09419d572e90 77 int main() {
BETZtechnik 1:e8452b75301e 78
BETZtechnik 1:e8452b75301e 79 // ************************************** SCREEN INIT *************************************************
BETZtechnik 1:e8452b75301e 80
BETZtechnik 1:e8452b75301e 81 tft.initR(INITR_GREENTAB); // initialize a ST7735S chip, black tab
BETZtechnik 1:e8452b75301e 82
BETZtechnik 1:e8452b75301e 83 tft.setRotation(3);
BETZtechnik 1:e8452b75301e 84 tft.fillScreen(BLACK);
BETZtechnik 1:e8452b75301e 85 tft.setCursor(30,120);
BETZtechnik 10:84ea3ec0660d 86 tft.setTextColor(BLUE);
BETZtechnik 1:e8452b75301e 87 tft.setTextWrap(false);
BETZtechnik 12:4ad111112853 88 tft.printf("AccuBlast v1.0");
BETZtechnik 1:e8452b75301e 89
BETZtechnik 1:e8452b75301e 90 tft.setCursor(4, 4);
BETZtechnik 1:e8452b75301e 91 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 92 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 93 tft.printf("N1");
BETZtechnik 1:e8452b75301e 94
BETZtechnik 1:e8452b75301e 95 tft.setCursor(80, 4);
BETZtechnik 1:e8452b75301e 96 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 97 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 98 tft.printf("N2");
BETZtechnik 1:e8452b75301e 99
BETZtechnik 1:e8452b75301e 100 tft.setCursor(4, 28);
BETZtechnik 1:e8452b75301e 101 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 102 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 103 tft.printf("T");
BETZtechnik 1:e8452b75301e 104
BETZtechnik 1:e8452b75301e 105 tft.setCursor(4, 50);
BETZtechnik 1:e8452b75301e 106 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 107 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 108 tft.printf("Twitch:");
BETZtechnik 1:e8452b75301e 109
BETZtechnik 1:e8452b75301e 110 tft.setCursor(4, 65);
BETZtechnik 1:e8452b75301e 111 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 112 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 113 tft.printf("Sync:");
BETZtechnik 1:e8452b75301e 114
BETZtechnik 1:e8452b75301e 115 tft.setCursor(4, 80);
BETZtechnik 1:e8452b75301e 116 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 117 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 118 tft.printf("AUX 1:");
BETZtechnik 1:e8452b75301e 119
BETZtechnik 1:e8452b75301e 120 tft.setCursor(4, 95);
BETZtechnik 1:e8452b75301e 121 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 122 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 123 tft.printf("AUX 2:");
BETZtechnik 10:84ea3ec0660d 124
BETZtechnik 10:84ea3ec0660d 125 tft.setCursor(4, 110);
BETZtechnik 10:84ea3ec0660d 126 tft.setTextColor(WHITE);
BETZtechnik 10:84ea3ec0660d 127 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 128 tft.printf("AUX 3:");
BETZtechnik 10:84ea3ec0660d 129
BETZtechnik 10:84ea3ec0660d 130 tft.setCursor(75, 95);
BETZtechnik 10:84ea3ec0660d 131 tft.setTextColor(WHITE);
BETZtechnik 10:84ea3ec0660d 132 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 133 tft.printf("Num Tls");
BETZtechnik 1:e8452b75301e 134
BETZtechnik 10:84ea3ec0660d 135 tft.setCursor(75, 110);
BETZtechnik 1:e8452b75301e 136 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 137 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 138 tft.printf("Num Noz");
BETZtechnik 1:e8452b75301e 139
BETZtechnik 10:84ea3ec0660d 140 tft.setCursor(75, 50);
BETZtechnik 10:84ea3ec0660d 141 tft.setTextColor(WHITE);
BETZtechnik 10:84ea3ec0660d 142 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 143 tft.printf("N1 dir:");
BETZtechnik 10:84ea3ec0660d 144
BETZtechnik 10:84ea3ec0660d 145 tft.setCursor(75, 65);
BETZtechnik 10:84ea3ec0660d 146 tft.setTextColor(WHITE);
BETZtechnik 10:84ea3ec0660d 147 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 148 tft.printf("N2 dir:");
BETZtechnik 10:84ea3ec0660d 149
BETZtechnik 10:84ea3ec0660d 150 tft.setCursor(75, 80);
BETZtechnik 10:84ea3ec0660d 151 tft.setTextColor(WHITE);
BETZtechnik 10:84ea3ec0660d 152 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 153 tft.printf("version:");
BETZtechnik 10:84ea3ec0660d 154
BETZtechnik 1:e8452b75301e 155 // **************************************************************************************************************
BETZtechnik 10:84ea3ec0660d 156 int version = 0; // 0= basic, 1=pro
BETZtechnik 10:84ea3ec0660d 157 int lastVersion = 99;
BETZtechnik 10:84ea3ec0660d 158
BETZtechnik 10:84ea3ec0660d 159 int sync = 0; // sync setting for N1 and N1
BETZtechnik 10:84ea3ec0660d 160 int lastSync = 99;
BETZtechnik 10:84ea3ec0660d 161 int syncSpread = 0;
BETZtechnik 10:84ea3ec0660d 162
BETZtechnik 10:84ea3ec0660d 163 int n1Dir = 0; // direction of knob for N1
BETZtechnik 10:84ea3ec0660d 164 int lastN1Dir = 99;
BETZtechnik 10:84ea3ec0660d 165
BETZtechnik 10:84ea3ec0660d 166 int n2Dir = 0; // direction of knob for N2
BETZtechnik 10:84ea3ec0660d 167 int lastN2Dir = 99;
BETZtechnik 10:84ea3ec0660d 168
BETZtechnik 10:84ea3ec0660d 169 int index = 0;
BETZtechnik 1:e8452b75301e 170
BETZtechnik 1:e8452b75301e 171 int count = 0;
BETZtechnik 10:84ea3ec0660d 172 int maxCount = 12; //max number of menu items
BETZtechnik 1:e8452b75301e 173 int lastCount = 99;
BETZtechnik 1:e8452b75301e 174
BETZtechnik 10:84ea3ec0660d 175 int twitch = 0;
BETZtechnik 10:84ea3ec0660d 176 int lastTwitch = 300;
BETZtechnik 10:84ea3ec0660d 177 int lastTwitchMove = 0;
BETZtechnik 10:84ea3ec0660d 178 int twitchStart = 0; // has twitching begun?
BETZtechnik 10:84ea3ec0660d 179 int twitchDirection = 0; // 0 is up, 1 is down.
BETZtechnik 10:84ea3ec0660d 180 int maxTwitch = 0;
BETZtechnik 10:84ea3ec0660d 181 int minTwitch = 0;
BETZtechnik 10:84ea3ec0660d 182
BETZtechnik 10:84ea3ec0660d 183 int tw1 = 5; // stages of servo write to control speed of sweep. 11.11 Ms = 1 degree
BETZtechnik 10:84ea3ec0660d 184 int tw2 = 10;
BETZtechnik 10:84ea3ec0660d 185 int tw3 = 15;
BETZtechnik 10:84ea3ec0660d 186
BETZtechnik 10:84ea3ec0660d 187 int twReadMs = 100; // interval of twitch changes us.
BETZtechnik 10:84ea3ec0660d 188
BETZtechnik 1:e8452b75301e 189 //************* Pull previous setting from eeprom *******************
BETZtechnik 1:e8452b75301e 190
BETZtechnik 1:e8452b75301e 191 char tempToolNo = 0; // last tool in spindle
BETZtechnik 1:e8452b75301e 192 eeprom.read(currentToolAddress, &tempToolNo);
BETZtechnik 1:e8452b75301e 193 int currentToolNo = (int)tempToolNo;
BETZtechnik 1:e8452b75301e 194
BETZtechnik 1:e8452b75301e 195 char tempNumTools = 0; // number of tools in ATC
BETZtechnik 1:e8452b75301e 196 eeprom.read(numToolsAddress, &tempNumTools);
BETZtechnik 1:e8452b75301e 197 int numTools = (int)tempNumTools;
BETZtechnik 1:e8452b75301e 198
BETZtechnik 1:e8452b75301e 199 char tempNumNoz = 0; // number of nozzles installed
BETZtechnik 1:e8452b75301e 200 eeprom.read(numNozAddress, &tempNumNoz);
BETZtechnik 1:e8452b75301e 201 int numNoz = (int)tempNumNoz;
BETZtechnik 1:e8452b75301e 202
BETZtechnik 10:84ea3ec0660d 203 char tempLastAngle = 0; // last angle of last tool in spindle N1
BETZtechnik 1:e8452b75301e 204 eeprom.read(currentToolNo, &tempLastAngle);
BETZtechnik 1:e8452b75301e 205 int lastAngle = (int)tempLastAngle;
BETZtechnik 10:84ea3ec0660d 206 lastAngle = lastAngle - 90; // Not storing signed int, so signed value is 45 less than what was stored to memory.
BETZtechnik 10:84ea3ec0660d 207
BETZtechnik 10:84ea3ec0660d 208 char tempLastAngleN2 = 0; // last angle of last tool in spindle
BETZtechnik 10:84ea3ec0660d 209 eeprom.read(currentToolNo+100, &tempLastAngleN2);
BETZtechnik 10:84ea3ec0660d 210 int lastAngleN2 = (int)tempLastAngleN2;
BETZtechnik 10:84ea3ec0660d 211 lastAngleN2 = lastAngleN2 - 90; // Not storing signed int, so signed value is 45 less than what was stored to memory.
BETZtechnik 10:84ea3ec0660d 212
BETZtechnik 10:84ea3ec0660d 213 char tempLastTwitch = 0; // last Twitch setting for the current tool in spindle
BETZtechnik 10:84ea3ec0660d 214 eeprom.read(currentToolNo + 150, &tempLastTwitch);
BETZtechnik 10:84ea3ec0660d 215 twitch = (int)tempLastTwitch; // should be 1, 2 or 3.
BETZtechnik 10:84ea3ec0660d 216
BETZtechnik 10:84ea3ec0660d 217 char tempLastVersion = 0; // version of system. 0=basic, 1=pro
BETZtechnik 10:84ea3ec0660d 218 eeprom.read(versionAddress, &tempLastVersion);
BETZtechnik 10:84ea3ec0660d 219 version = (int)tempLastVersion;
BETZtechnik 10:84ea3ec0660d 220
BETZtechnik 10:84ea3ec0660d 221 char tempLastSync = 0; // previous sync setting
BETZtechnik 10:84ea3ec0660d 222 eeprom.read(syncAddress, &tempLastSync);
BETZtechnik 10:84ea3ec0660d 223 sync = (int)tempLastSync;
BETZtechnik 10:84ea3ec0660d 224
BETZtechnik 10:84ea3ec0660d 225 char tempLastN1Dir = 0; // previous N1 knob direction setting
BETZtechnik 10:84ea3ec0660d 226 eeprom.read(n1DirAddress, &tempLastN1Dir);
BETZtechnik 10:84ea3ec0660d 227 n1Dir = (int)tempLastN1Dir;
BETZtechnik 10:84ea3ec0660d 228
BETZtechnik 10:84ea3ec0660d 229 char tempLastN2Dir = 0; // previous N2 knob direction setting
BETZtechnik 10:84ea3ec0660d 230 eeprom.read(n2DirAddress, &tempLastN2Dir);
BETZtechnik 10:84ea3ec0660d 231 n2Dir = (int)tempLastN2Dir;
BETZtechnik 10:84ea3ec0660d 232
BETZtechnik 10:84ea3ec0660d 233
BETZtechnik 10:84ea3ec0660d 234 /*EEprom test over 2 digits:
BETZtechnik 10:84ea3ec0660d 235 int test1 = 150;
BETZtechnik 10:84ea3ec0660d 236 eeprom.write(199, test1);
BETZtechnik 10:84ea3ec0660d 237 wait(1);
BETZtechnik 10:84ea3ec0660d 238 char tempN2char = 0;
BETZtechnik 10:84ea3ec0660d 239 eeprom.read(199, &tempN2char);
BETZtechnik 10:84ea3ec0660d 240 int tempN2 = (int)tempN2char;
BETZtechnik 10:84ea3ec0660d 241 tft.setCursor(130,120);
BETZtechnik 10:84ea3ec0660d 242 tft.setTextColor(RED);
BETZtechnik 10:84ea3ec0660d 243 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 244 tft.printf("%d", tempN2);
BETZtechnik 10:84ea3ec0660d 245 */
BETZtechnik 10:84ea3ec0660d 246
BETZtechnik 1:e8452b75301e 247
BETZtechnik 1:e8452b75301e 248 //******************** Button debounce *********************************
BETZtechnik 0:09419d572e90 249
BETZtechnik 0:09419d572e90 250
BETZtechnik 1:e8452b75301e 251
BETZtechnik 1:e8452b75301e 252 backButton.mode(PullUp); // button pull up
BETZtechnik 1:e8452b75301e 253 //tDownButton.mode(PullUp); // button pull up
BETZtechnik 1:e8452b75301e 254 encoderButton.mode(PullUp);
BETZtechnik 1:e8452b75301e 255 encoderFalseButton.mode(PullUp);
BETZtechnik 10:84ea3ec0660d 256 aButton.mode(PullUp);
BETZtechnik 0:09419d572e90 257
BETZtechnik 1:e8452b75301e 258 t.start(); // starts timer
BETZtechnik 1:e8452b75301e 259 lastBackButton = t.read_ms();
BETZtechnik 1:e8452b75301e 260 lastDownButton = t.read_ms();
BETZtechnik 1:e8452b75301e 261 lastEncoderButton = t.read_ms();
BETZtechnik 1:e8452b75301e 262
BETZtechnik 1:e8452b75301e 263 //****************************************************************************
BETZtechnik 0:09419d572e90 264
BETZtechnik 1:e8452b75301e 265 int lastToolNo = 99;
BETZtechnik 1:e8452b75301e 266 int lastNumTools = -1; // trigger to write eeprom value for number of tools
BETZtechnik 0:09419d572e90 267
BETZtechnik 1:e8452b75301e 268 int lastNumNoz = 0; //trigger display for number of nozzles after startup
BETZtechnik 0:09419d572e90 269
BETZtechnik 1:e8452b75301e 270 int n1Pos = lastAngle; //Set servo to last known postition prior to power off
BETZtechnik 0:09419d572e90 271 int lastN1Pos = 150;
BETZtechnik 0:09419d572e90 272
BETZtechnik 10:84ea3ec0660d 273 int n2Pos = lastAngleN2;
BETZtechnik 10:84ea3ec0660d 274 int lastN2Pos = 150;
BETZtechnik 10:84ea3ec0660d 275
BETZtechnik 0:09419d572e90 276 int servo1Pos = 0;
BETZtechnik 0:09419d572e90 277
BETZtechnik 10:84ea3ec0660d 278 // RPG rpg1(P2_2,P1_20,P0_23); // RPG (PinName pA, PinName pB, PinName pPB)P0_23 is unconnected!! ;
BETZtechnik 10:84ea3ec0660d 279 //mRotaryEncoder Enc(P2_2,P1_20,P0_23, PullUp, 500);
BETZtechnik 10:84ea3ec0660d 280 mRotaryEncoder Enc(P1_20,P2_2,P0_23, PullUp, 1000);
BETZtechnik 1:e8452b75301e 281
BETZtechnik 1:e8452b75301e 282 myServo.period_ms(20);
BETZtechnik 0:09419d572e90 283
BETZtechnik 1:e8452b75301e 284 /*
BETZtechnik 1:e8452b75301e 285 char t1Ang = 200;
BETZtechnik 1:e8452b75301e 286 char t1Read = 0;
BETZtechnik 1:e8452b75301e 287
BETZtechnik 1:e8452b75301e 288 eeprom.write(1, t1Ang);
BETZtechnik 1:e8452b75301e 289 wait(1);
BETZtechnik 1:e8452b75301e 290 eeprom.read(1, &t1Read);
BETZtechnik 0:09419d572e90 291
BETZtechnik 0:09419d572e90 292
BETZtechnik 0:09419d572e90 293 tft.setCursor(30,110);
BETZtechnik 0:09419d572e90 294 tft.setTextColor(WHITE);
BETZtechnik 0:09419d572e90 295 tft.setTextWrap(true);
BETZtechnik 1:e8452b75301e 296 // tft.printf("%s\r\n",t1Read);
BETZtechnik 1:e8452b75301e 297 tft.printf("%d", currentTool);
BETZtechnik 1:e8452b75301e 298 */
BETZtechnik 1:e8452b75301e 299
BETZtechnik 1:e8452b75301e 300 uint8_t c = 0; // for 485 link
BETZtechnik 3:bbbacfd62773 301
BETZtechnik 3:bbbacfd62773 302
BETZtechnik 3:bbbacfd62773 303 int serialToolNumber = 0;
BETZtechnik 3:bbbacfd62773 304 int stage = 0; // for serial parsing
BETZtechnik 3:bbbacfd62773 305 int Tens = 0;
BETZtechnik 3:bbbacfd62773 306 int Ones = 0;
BETZtechnik 3:bbbacfd62773 307
BETZtechnik 3:bbbacfd62773 308 dir = 0;
BETZtechnik 9:69155b34efd6 309
BETZtechnik 9:69155b34efd6 310 wait(2);
BETZtechnik 9:69155b34efd6 311 Serial device(P0_14, P0_13, 19200); // RS 485 TX RX?
BETZtechnik 0:09419d572e90 312
BETZtechnik 0:09419d572e90 313 while(1) {
BETZtechnik 0:09419d572e90 314
BETZtechnik 10:84ea3ec0660d 315
BETZtechnik 10:84ea3ec0660d 316
BETZtechnik 3:bbbacfd62773 317 /*
BETZtechnik 3:bbbacfd62773 318 while (device.readable())
BETZtechnik 3:bbbacfd62773 319 {
BETZtechnik 3:bbbacfd62773 320 c = device.getc();
BETZtechnik 3:bbbacfd62773 321
BETZtechnik 3:bbbacfd62773 322
BETZtechnik 3:bbbacfd62773 323 if (c == '+'){
BETZtechnik 3:bbbacfd62773 324 currentToolNo = currentToolNo +1;
BETZtechnik 3:bbbacfd62773 325 if (currentToolNo > numTools){
BETZtechnik 3:bbbacfd62773 326 currentToolNo = 1;
BETZtechnik 3:bbbacfd62773 327 }
BETZtechnik 3:bbbacfd62773 328 }
BETZtechnik 3:bbbacfd62773 329
BETZtechnik 3:bbbacfd62773 330 else if (c == '-'){
BETZtechnik 3:bbbacfd62773 331 currentToolNo = currentToolNo - 1;
BETZtechnik 3:bbbacfd62773 332 if (currentToolNo > 1){
BETZtechnik 3:bbbacfd62773 333 currentToolNo = numTools;
BETZtechnik 3:bbbacfd62773 334 }
BETZtechnik 3:bbbacfd62773 335 }
BETZtechnik 3:bbbacfd62773 336 }
BETZtechnik 3:bbbacfd62773 337 */
BETZtechnik 7:d3c19705042b 338
BETZtechnik 7:d3c19705042b 339 /*
BETZtechnik 3:bbbacfd62773 340 while (device.readable())
BETZtechnik 3:bbbacfd62773 341 {
BETZtechnik 3:bbbacfd62773 342
BETZtechnik 3:bbbacfd62773 343
BETZtechnik 3:bbbacfd62773 344 c = device.getc();
BETZtechnik 3:bbbacfd62773 345
BETZtechnik 3:bbbacfd62773 346 if (c == 'M'){
BETZtechnik 3:bbbacfd62773 347 // stage = 1;
BETZtechnik 3:bbbacfd62773 348
BETZtechnik 3:bbbacfd62773 349 c = device.getc();
BETZtechnik 3:bbbacfd62773 350 if (c == '+'){
BETZtechnik 3:bbbacfd62773 351
BETZtechnik 3:bbbacfd62773 352 // tft.setTextColor(WHITE);
BETZtechnik 3:bbbacfd62773 353 // tft.setCursor(100, 100);
BETZtechnik 3:bbbacfd62773 354 // tft.printf("%d", c);
BETZtechnik 3:bbbacfd62773 355 currentToolNo = currentToolNo +1;
BETZtechnik 3:bbbacfd62773 356 if (currentToolNo > numTools){
BETZtechnik 3:bbbacfd62773 357 currentToolNo = 1;
BETZtechnik 3:bbbacfd62773 358 }
BETZtechnik 3:bbbacfd62773 359 }
BETZtechnik 3:bbbacfd62773 360
BETZtechnik 3:bbbacfd62773 361 else if (c == '-'){
BETZtechnik 3:bbbacfd62773 362 currentToolNo = currentToolNo - 1;
BETZtechnik 3:bbbacfd62773 363 if (currentToolNo < 1){
BETZtechnik 3:bbbacfd62773 364 currentToolNo = numTools;
BETZtechnik 3:bbbacfd62773 365 }
BETZtechnik 3:bbbacfd62773 366 }
BETZtechnik 3:bbbacfd62773 367
BETZtechnik 3:bbbacfd62773 368 }
BETZtechnik 3:bbbacfd62773 369 }
BETZtechnik 3:bbbacfd62773 370
BETZtechnik 7:d3c19705042b 371 */
BETZtechnik 3:bbbacfd62773 372
BETZtechnik 3:bbbacfd62773 373
BETZtechnik 3:bbbacfd62773 374
BETZtechnik 1:e8452b75301e 375 //myled = 1;
BETZtechnik 1:e8452b75301e 376
BETZtechnik 1:e8452b75301e 377 if (t.read() > 1200){ // timer can only hold 30 min, so reset after 20
BETZtechnik 1:e8452b75301e 378 t.reset();
BETZtechnik 1:e8452b75301e 379 lastBackButton = t.read_ms();
BETZtechnik 1:e8452b75301e 380 lastDownButton = t.read_ms();
BETZtechnik 1:e8452b75301e 381 lastEncoderButton = t.read_ms();
BETZtechnik 1:e8452b75301e 382 }
BETZtechnik 1:e8452b75301e 383
BETZtechnik 10:84ea3ec0660d 384
BETZtechnik 10:84ea3ec0660d 385
BETZtechnik 1:e8452b75301e 386 if (backButton == 0){ //Back button was pressed so back to default selection
BETZtechnik 1:e8452b75301e 387 count = 0;
BETZtechnik 1:e8452b75301e 388 }
BETZtechnik 1:e8452b75301e 389
BETZtechnik 1:e8452b75301e 390 if (encoderButton == 0){
BETZtechnik 10:84ea3ec0660d 391 if (t.read_ms() > (lastEncoderButton + 50)){ // from 200
BETZtechnik 1:e8452b75301e 392 count = count + 1; //Reset count if PB pressed
BETZtechnik 1:e8452b75301e 393 }
BETZtechnik 1:e8452b75301e 394 if (count > maxCount){
BETZtechnik 1:e8452b75301e 395 count = 0;
BETZtechnik 1:e8452b75301e 396 }
BETZtechnik 1:e8452b75301e 397 lastEncoderButton = t.read_ms();
BETZtechnik 1:e8452b75301e 398
BETZtechnik 1:e8452b75301e 399 if (count > maxCount){
BETZtechnik 1:e8452b75301e 400 count = 0;
BETZtechnik 1:e8452b75301e 401 }
BETZtechnik 1:e8452b75301e 402 }
BETZtechnik 10:84ea3ec0660d 403
BETZtechnik 10:84ea3ec0660d 404 // ************* Rectangles for identifying active selection *****************************
BETZtechnik 10:84ea3ec0660d 405
BETZtechnik 10:84ea3ec0660d 406 if (count != lastCount){
BETZtechnik 10:84ea3ec0660d 407
BETZtechnik 10:84ea3ec0660d 408 if (count ==0){
BETZtechnik 10:84ea3ec0660d 409 Enc.Set(n1Pos);
BETZtechnik 10:84ea3ec0660d 410 }
BETZtechnik 10:84ea3ec0660d 411
BETZtechnik 10:84ea3ec0660d 412 else if (count == 1){
BETZtechnik 10:84ea3ec0660d 413 Enc.Set(n2Pos);
BETZtechnik 10:84ea3ec0660d 414 }
BETZtechnik 10:84ea3ec0660d 415
BETZtechnik 10:84ea3ec0660d 416 else if (count == 2){
BETZtechnik 10:84ea3ec0660d 417 Enc.Set(currentToolNo);
BETZtechnik 10:84ea3ec0660d 418 }
BETZtechnik 10:84ea3ec0660d 419
BETZtechnik 10:84ea3ec0660d 420 else if (count == 3){
BETZtechnik 10:84ea3ec0660d 421 Enc.Set(twitch);
BETZtechnik 10:84ea3ec0660d 422 }
BETZtechnik 10:84ea3ec0660d 423
BETZtechnik 10:84ea3ec0660d 424 else if (count == 4){
BETZtechnik 10:84ea3ec0660d 425 Enc.Set(sync);
BETZtechnik 10:84ea3ec0660d 426 }
BETZtechnik 10:84ea3ec0660d 427
BETZtechnik 10:84ea3ec0660d 428 else if (count == 8){
BETZtechnik 10:84ea3ec0660d 429 Enc.Set(n1Dir);
BETZtechnik 10:84ea3ec0660d 430 }
BETZtechnik 10:84ea3ec0660d 431
BETZtechnik 10:84ea3ec0660d 432 else if (count == 9){
BETZtechnik 10:84ea3ec0660d 433 Enc.Set(n2Dir);
BETZtechnik 10:84ea3ec0660d 434 }
BETZtechnik 10:84ea3ec0660d 435
BETZtechnik 10:84ea3ec0660d 436 else if (count == 10){
BETZtechnik 10:84ea3ec0660d 437 Enc.Set(version);
BETZtechnik 10:84ea3ec0660d 438 }
BETZtechnik 10:84ea3ec0660d 439
BETZtechnik 10:84ea3ec0660d 440 else if (count == 11){
BETZtechnik 10:84ea3ec0660d 441 Enc.Set(numTools);
BETZtechnik 10:84ea3ec0660d 442 }
BETZtechnik 10:84ea3ec0660d 443
BETZtechnik 10:84ea3ec0660d 444 else if (count == 12){
BETZtechnik 10:84ea3ec0660d 445 Enc.Set(numNoz);
BETZtechnik 10:84ea3ec0660d 446 }
BETZtechnik 10:84ea3ec0660d 447
BETZtechnik 10:84ea3ec0660d 448
BETZtechnik 10:84ea3ec0660d 449
BETZtechnik 10:84ea3ec0660d 450 // clear old boxes (white or black)
BETZtechnik 10:84ea3ec0660d 451 if (lastCount == 0){
BETZtechnik 10:84ea3ec0660d 452 tft.drawRect(2,2,74,18,WHITE);
BETZtechnik 10:84ea3ec0660d 453 }
BETZtechnik 10:84ea3ec0660d 454
BETZtechnik 10:84ea3ec0660d 455 else if ((lastCount == 1) && (numNoz == 2)){
BETZtechnik 10:84ea3ec0660d 456 tft.drawRect(78,2,74,18,WHITE);
BETZtechnik 10:84ea3ec0660d 457 }
BETZtechnik 10:84ea3ec0660d 458
BETZtechnik 10:84ea3ec0660d 459 else if (lastCount == 2){
BETZtechnik 10:84ea3ec0660d 460 tft.drawRect(20,26,28,18,BLACK);
BETZtechnik 10:84ea3ec0660d 461 }
BETZtechnik 10:84ea3ec0660d 462
BETZtechnik 10:84ea3ec0660d 463 else if (lastCount == 3){
BETZtechnik 10:84ea3ec0660d 464 tft.drawRect(50,48,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 465 }
BETZtechnik 10:84ea3ec0660d 466
BETZtechnik 10:84ea3ec0660d 467 else if (lastCount == 4){
BETZtechnik 10:84ea3ec0660d 468 tft.drawRect(50,63,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 469 }
BETZtechnik 10:84ea3ec0660d 470
BETZtechnik 10:84ea3ec0660d 471 else if (lastCount == 5){
BETZtechnik 10:84ea3ec0660d 472 tft.drawRect(50,78,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 473 }
BETZtechnik 10:84ea3ec0660d 474
BETZtechnik 10:84ea3ec0660d 475 else if (lastCount == 6){
BETZtechnik 10:84ea3ec0660d 476 tft.drawRect(50,93,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 477 }
BETZtechnik 10:84ea3ec0660d 478
BETZtechnik 10:84ea3ec0660d 479 else if (lastCount == 7){
BETZtechnik 10:84ea3ec0660d 480 tft.drawRect(50,108,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 481 }
BETZtechnik 10:84ea3ec0660d 482
BETZtechnik 10:84ea3ec0660d 483 else if (lastCount == 8){
BETZtechnik 10:84ea3ec0660d 484 tft.drawRect(130,48,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 485 }
BETZtechnik 10:84ea3ec0660d 486
BETZtechnik 10:84ea3ec0660d 487 else if (lastCount == 9){
BETZtechnik 10:84ea3ec0660d 488 tft.drawRect(130,63,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 489 }
BETZtechnik 10:84ea3ec0660d 490
BETZtechnik 10:84ea3ec0660d 491 else if (lastCount == 10){
BETZtechnik 10:84ea3ec0660d 492 tft.drawRect(130,78,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 493 }
BETZtechnik 10:84ea3ec0660d 494
BETZtechnik 10:84ea3ec0660d 495 else if (lastCount == 11){
BETZtechnik 10:84ea3ec0660d 496 tft.drawRect(130,93,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 497 }
BETZtechnik 10:84ea3ec0660d 498
BETZtechnik 10:84ea3ec0660d 499 else if (lastCount == 12){
BETZtechnik 10:84ea3ec0660d 500 tft.drawRect(130,108,20,12,BLACK);
BETZtechnik 10:84ea3ec0660d 501 }
BETZtechnik 10:84ea3ec0660d 502
BETZtechnik 10:84ea3ec0660d 503 // Set new box
BETZtechnik 10:84ea3ec0660d 504
BETZtechnik 10:84ea3ec0660d 505 if (count == 0){ // N1 adjust
BETZtechnik 10:84ea3ec0660d 506 tft.drawRect(2,2,74,18,GREEN);
BETZtechnik 10:84ea3ec0660d 507 }
BETZtechnik 10:84ea3ec0660d 508
BETZtechnik 10:84ea3ec0660d 509 else if ((count == 1) && (numNoz == 2)){ // N2 adjust
BETZtechnik 10:84ea3ec0660d 510 tft.drawRect(78,2,74,18,GREEN);
BETZtechnik 10:84ea3ec0660d 511 }
BETZtechnik 10:84ea3ec0660d 512
BETZtechnik 10:84ea3ec0660d 513 else if (count == 2){
BETZtechnik 10:84ea3ec0660d 514 tft.drawRect(20,26,28,18,GREEN);
BETZtechnik 10:84ea3ec0660d 515 }
BETZtechnik 10:84ea3ec0660d 516
BETZtechnik 10:84ea3ec0660d 517 else if (count == 3){
BETZtechnik 10:84ea3ec0660d 518 tft.drawRect(50,48,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 519 }
BETZtechnik 10:84ea3ec0660d 520
BETZtechnik 10:84ea3ec0660d 521 else if (count == 4){
BETZtechnik 10:84ea3ec0660d 522 tft.drawRect(50,63,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 523 }
BETZtechnik 10:84ea3ec0660d 524
BETZtechnik 10:84ea3ec0660d 525 else if (count == 5){
BETZtechnik 10:84ea3ec0660d 526 tft.drawRect(50,78,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 527 }
BETZtechnik 10:84ea3ec0660d 528
BETZtechnik 10:84ea3ec0660d 529 else if (count == 6){
BETZtechnik 10:84ea3ec0660d 530 tft.drawRect(50,93,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 531 }
BETZtechnik 10:84ea3ec0660d 532
BETZtechnik 10:84ea3ec0660d 533 else if (count == 7){
BETZtechnik 10:84ea3ec0660d 534 tft.drawRect(50,108,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 535 }
BETZtechnik 10:84ea3ec0660d 536
BETZtechnik 10:84ea3ec0660d 537 else if (count == 8){
BETZtechnik 10:84ea3ec0660d 538 tft.drawRect(130,48,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 539 }
BETZtechnik 10:84ea3ec0660d 540
BETZtechnik 10:84ea3ec0660d 541 else if (count == 9){
BETZtechnik 10:84ea3ec0660d 542 tft.drawRect(130,63,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 543 }
BETZtechnik 10:84ea3ec0660d 544
BETZtechnik 10:84ea3ec0660d 545 else if (count == 10){
BETZtechnik 10:84ea3ec0660d 546 tft.drawRect(130,78,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 547 }
BETZtechnik 10:84ea3ec0660d 548
BETZtechnik 10:84ea3ec0660d 549 else if (count == 11){
BETZtechnik 10:84ea3ec0660d 550 tft.drawRect(130,93,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 551 }
BETZtechnik 10:84ea3ec0660d 552
BETZtechnik 10:84ea3ec0660d 553 else if (count == 12){
BETZtechnik 10:84ea3ec0660d 554 tft.drawRect(130,108,20,12,GREEN);
BETZtechnik 10:84ea3ec0660d 555 }
BETZtechnik 10:84ea3ec0660d 556
BETZtechnik 10:84ea3ec0660d 557 lastCount = count;
BETZtechnik 10:84ea3ec0660d 558 }
BETZtechnik 10:84ea3ec0660d 559
BETZtechnik 10:84ea3ec0660d 560
BETZtechnik 10:84ea3ec0660d 561
BETZtechnik 10:84ea3ec0660d 562
BETZtechnik 0:09419d572e90 563
BETZtechnik 1:e8452b75301e 564 //****************** ENCODER ACTIONS ************************************************
BETZtechnik 1:e8452b75301e 565 if (count == 0){ // knob controls servo value
BETZtechnik 10:84ea3ec0660d 566 n1Pos = Enc.Get();
BETZtechnik 10:84ea3ec0660d 567 if (sync == 1){
BETZtechnik 10:84ea3ec0660d 568 n2Pos = (n1Pos + syncSpread);
BETZtechnik 10:84ea3ec0660d 569 if (n2Pos > 90){
BETZtechnik 10:84ea3ec0660d 570 n2Pos = 90;
BETZtechnik 10:84ea3ec0660d 571 //Enc.Set(90);
BETZtechnik 10:84ea3ec0660d 572 }
BETZtechnik 10:84ea3ec0660d 573 if (n2Pos < -90){
BETZtechnik 10:84ea3ec0660d 574 n2Pos = -90;
BETZtechnik 10:84ea3ec0660d 575 // Enc.Set(-90);
BETZtechnik 10:84ea3ec0660d 576 }
BETZtechnik 10:84ea3ec0660d 577 }
BETZtechnik 10:84ea3ec0660d 578 if (sync == 2){
BETZtechnik 10:84ea3ec0660d 579 n2Pos = n2Pos + (lastN1Pos - n1Pos);
BETZtechnik 10:84ea3ec0660d 580 if (n2Pos > 90){
BETZtechnik 10:84ea3ec0660d 581 n2Pos = 90;
BETZtechnik 10:84ea3ec0660d 582 //Enc.Set(90);
BETZtechnik 1:e8452b75301e 583 }
BETZtechnik 10:84ea3ec0660d 584 if (n2Pos < -90){
BETZtechnik 10:84ea3ec0660d 585 n2Pos = -90;
BETZtechnik 10:84ea3ec0660d 586 // Enc.Set(-90);
BETZtechnik 1:e8452b75301e 587 }
BETZtechnik 10:84ea3ec0660d 588 }
BETZtechnik 10:84ea3ec0660d 589 if (n1Pos > 90){
BETZtechnik 10:84ea3ec0660d 590 n1Pos = 90;
BETZtechnik 10:84ea3ec0660d 591 Enc.Set(90);
BETZtechnik 10:84ea3ec0660d 592 }
BETZtechnik 10:84ea3ec0660d 593 if (n1Pos < -90){
BETZtechnik 10:84ea3ec0660d 594 n1Pos = -90;
BETZtechnik 10:84ea3ec0660d 595 Enc.Set(-90);
BETZtechnik 1:e8452b75301e 596 }
BETZtechnik 10:84ea3ec0660d 597 }
BETZtechnik 10:84ea3ec0660d 598 //***************************
BETZtechnik 10:84ea3ec0660d 599 if (count == 1){ // knob controls servo value
BETZtechnik 10:84ea3ec0660d 600 n2Pos = Enc.Get();
BETZtechnik 10:84ea3ec0660d 601 if (n2Pos > 90){
BETZtechnik 10:84ea3ec0660d 602 n2Pos = 90;
BETZtechnik 10:84ea3ec0660d 603 Enc.Set(90);
BETZtechnik 10:84ea3ec0660d 604 }
BETZtechnik 10:84ea3ec0660d 605 if (n2Pos < -90){
BETZtechnik 10:84ea3ec0660d 606 n2Pos = -90;
BETZtechnik 10:84ea3ec0660d 607 Enc.Set(-90);
BETZtechnik 10:84ea3ec0660d 608 }
BETZtechnik 10:84ea3ec0660d 609 }
BETZtechnik 10:84ea3ec0660d 610 //****************************
BETZtechnik 1:e8452b75301e 611 if (count == 2){ //knob controls tool number
BETZtechnik 10:84ea3ec0660d 612
BETZtechnik 10:84ea3ec0660d 613 currentToolNo = Enc.Get();
BETZtechnik 1:e8452b75301e 614 if (currentToolNo > numTools){
BETZtechnik 1:e8452b75301e 615 currentToolNo = numTools;
BETZtechnik 1:e8452b75301e 616 }
BETZtechnik 1:e8452b75301e 617 if (currentToolNo < 1){
BETZtechnik 1:e8452b75301e 618 currentToolNo = 1;
BETZtechnik 10:84ea3ec0660d 619 Enc.Set(1);
BETZtechnik 1:e8452b75301e 620 }
BETZtechnik 1:e8452b75301e 621 }
BETZtechnik 10:84ea3ec0660d 622 //****************************
BETZtechnik 10:84ea3ec0660d 623 if (count == 3){ // Knob controls twitch setting
BETZtechnik 10:84ea3ec0660d 624 twitch = Enc.Get();
BETZtechnik 10:84ea3ec0660d 625 if (twitch < 0){
BETZtechnik 10:84ea3ec0660d 626 twitch = 0;
BETZtechnik 10:84ea3ec0660d 627 Enc.Set(0);
BETZtechnik 10:84ea3ec0660d 628 }
BETZtechnik 10:84ea3ec0660d 629 if (twitch > 3){
BETZtechnik 10:84ea3ec0660d 630 twitch = 3;
BETZtechnik 10:84ea3ec0660d 631 Enc.Set(3);
BETZtechnik 10:84ea3ec0660d 632 }
BETZtechnik 10:84ea3ec0660d 633 }
BETZtechnik 10:84ea3ec0660d 634 //****************************
BETZtechnik 10:84ea3ec0660d 635 if (count == 4){ // Knob controls sync setting. 1=off, 2=sync, 3=rev
BETZtechnik 10:84ea3ec0660d 636 sync = Enc.Get();
BETZtechnik 10:84ea3ec0660d 637 if (sync < 0){
BETZtechnik 10:84ea3ec0660d 638 sync= 0;
BETZtechnik 10:84ea3ec0660d 639 Enc.Set(0);
BETZtechnik 10:84ea3ec0660d 640 }
BETZtechnik 10:84ea3ec0660d 641 if (sync > 2){
BETZtechnik 10:84ea3ec0660d 642 sync = 2;
BETZtechnik 10:84ea3ec0660d 643 Enc.Set(2);
BETZtechnik 10:84ea3ec0660d 644 }
BETZtechnik 10:84ea3ec0660d 645 }
BETZtechnik 10:84ea3ec0660d 646 //****************************
BETZtechnik 10:84ea3ec0660d 647 // 5,6,7 AUX?
BETZtechnik 10:84ea3ec0660d 648 if (count == 8){ // knob controls the direction of rotation for N1
BETZtechnik 10:84ea3ec0660d 649 n1Dir = Enc.Get();
BETZtechnik 10:84ea3ec0660d 650
BETZtechnik 10:84ea3ec0660d 651 if (n1Dir > 1){
BETZtechnik 10:84ea3ec0660d 652 n1Dir = 1;
BETZtechnik 10:84ea3ec0660d 653 Enc.Set(1);
BETZtechnik 10:84ea3ec0660d 654 }
BETZtechnik 1:e8452b75301e 655
BETZtechnik 10:84ea3ec0660d 656 if (n1Dir < 0){
BETZtechnik 10:84ea3ec0660d 657 n1Dir =0;
BETZtechnik 10:84ea3ec0660d 658 Enc.Set(0);
BETZtechnik 10:84ea3ec0660d 659 }
BETZtechnik 10:84ea3ec0660d 660 }
BETZtechnik 10:84ea3ec0660d 661 //****************************
BETZtechnik 10:84ea3ec0660d 662 if (count == 9){ // knob controls the direction of rotation for N2
BETZtechnik 10:84ea3ec0660d 663 n2Dir = Enc.Get();
BETZtechnik 10:84ea3ec0660d 664
BETZtechnik 10:84ea3ec0660d 665 if (n2Dir > 1){
BETZtechnik 10:84ea3ec0660d 666 n2Dir = 1;
BETZtechnik 10:84ea3ec0660d 667 Enc.Set(1);
BETZtechnik 10:84ea3ec0660d 668 }
BETZtechnik 10:84ea3ec0660d 669
BETZtechnik 10:84ea3ec0660d 670 if (n2Dir < 0){
BETZtechnik 10:84ea3ec0660d 671 n2Dir =0;
BETZtechnik 10:84ea3ec0660d 672 Enc.Set(0);
BETZtechnik 10:84ea3ec0660d 673 }
BETZtechnik 10:84ea3ec0660d 674 }
BETZtechnik 10:84ea3ec0660d 675 //****************************
BETZtechnik 10:84ea3ec0660d 676 if (count == 10){ // knob controls the version
BETZtechnik 10:84ea3ec0660d 677 version = Enc.Get();
BETZtechnik 10:84ea3ec0660d 678
BETZtechnik 10:84ea3ec0660d 679 if (version > 1){
BETZtechnik 10:84ea3ec0660d 680 version = 1;
BETZtechnik 10:84ea3ec0660d 681 Enc.Set(1);
BETZtechnik 10:84ea3ec0660d 682 }
BETZtechnik 10:84ea3ec0660d 683
BETZtechnik 10:84ea3ec0660d 684 if (version < 0){
BETZtechnik 10:84ea3ec0660d 685 version =0;
BETZtechnik 10:84ea3ec0660d 686 Enc.Set(0);
BETZtechnik 10:84ea3ec0660d 687 }
BETZtechnik 10:84ea3ec0660d 688 }
BETZtechnik 10:84ea3ec0660d 689 //****************************
BETZtechnik 10:84ea3ec0660d 690 if (count == 11){ //knob controls tool number
BETZtechnik 10:84ea3ec0660d 691 numTools = Enc.Get();
BETZtechnik 1:e8452b75301e 692 if (numTools > 50){
BETZtechnik 1:e8452b75301e 693 numTools = 50;
BETZtechnik 10:84ea3ec0660d 694 Enc.Set(50);
BETZtechnik 1:e8452b75301e 695 }
BETZtechnik 1:e8452b75301e 696 if (numTools < 1){
BETZtechnik 1:e8452b75301e 697 numTools = 1;
BETZtechnik 10:84ea3ec0660d 698 Enc.Set(1);
BETZtechnik 1:e8452b75301e 699 }
BETZtechnik 1:e8452b75301e 700 }
BETZtechnik 10:84ea3ec0660d 701 //****************************
BETZtechnik 10:84ea3ec0660d 702 if (count == 12){ //knob controls tool number
BETZtechnik 10:84ea3ec0660d 703 numNoz = Enc.Get();
BETZtechnik 1:e8452b75301e 704 if (numNoz> 2){
BETZtechnik 1:e8452b75301e 705 numNoz = 2;
BETZtechnik 10:84ea3ec0660d 706 Enc.Set(2);
BETZtechnik 1:e8452b75301e 707 }
BETZtechnik 1:e8452b75301e 708 if (numNoz < 1){
BETZtechnik 1:e8452b75301e 709 numNoz = 1;
BETZtechnik 10:84ea3ec0660d 710 Enc.Set(1);
BETZtechnik 1:e8452b75301e 711 }
BETZtechnik 1:e8452b75301e 712 }
BETZtechnik 10:84ea3ec0660d 713 //****************************************************************************************
BETZtechnik 1:e8452b75301e 714
BETZtechnik 10:84ea3ec0660d 715 if (version == 0){ //Basic runs the servo direct from the display unit
BETZtechnik 10:84ea3ec0660d 716 if (twitch == 0){
BETZtechnik 10:84ea3ec0660d 717 tw.stop();
BETZtechnik 10:84ea3ec0660d 718 twitchStart = 0;
BETZtechnik 10:84ea3ec0660d 719 twitchDirection = 0;
BETZtechnik 10:84ea3ec0660d 720 servo1Pos = servo1Scale.from(n1Pos);
BETZtechnik 1:e8452b75301e 721 }
BETZtechnik 1:e8452b75301e 722
BETZtechnik 10:84ea3ec0660d 723 if (twitch > 0){
BETZtechnik 10:84ea3ec0660d 724 if (twitchStart == 0){
BETZtechnik 10:84ea3ec0660d 725 tw.start(); // start timer for nozzle sweep
BETZtechnik 10:84ea3ec0660d 726 servo1Pos = servo1Scale.from(n1Pos);
BETZtechnik 10:84ea3ec0660d 727 lastTwitchMove = tw.read_ms(); // store time of last nozzle movement
BETZtechnik 10:84ea3ec0660d 728 minTwitch = servo1Pos; // store original servo postion for bottom of sweep
BETZtechnik 10:84ea3ec0660d 729 maxTwitch = servo1Pos + 1000; // 11.11mS per degree of sweep, 55 = 5 degrees of sweep. This should be a viariable set on the display.
BETZtechnik 10:84ea3ec0660d 730 twitchStart = 1;
BETZtechnik 10:84ea3ec0660d 731 }
BETZtechnik 10:84ea3ec0660d 732 if ((twitchStart == 1) && (tw.read_ms() > (lastTwitchMove + twReadMs))){
BETZtechnik 10:84ea3ec0660d 733 if (twitchDirection == 0){ //going up
BETZtechnik 10:84ea3ec0660d 734 servo1Pos = servo1Pos + 100; // add variable amount of uS to the servo signal
BETZtechnik 10:84ea3ec0660d 735
BETZtechnik 10:84ea3ec0660d 736 tft.setCursor(130,120);
BETZtechnik 10:84ea3ec0660d 737 tft.setTextColor(RED);
BETZtechnik 10:84ea3ec0660d 738 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 739 tft.printf("%d", servo1Pos);
BETZtechnik 10:84ea3ec0660d 740
BETZtechnik 10:84ea3ec0660d 741
BETZtechnik 10:84ea3ec0660d 742 if (servo1Pos > maxServo){
BETZtechnik 10:84ea3ec0660d 743 servo1Pos = maxServo;
BETZtechnik 10:84ea3ec0660d 744 twitchDirection = 1; //reverse direction
BETZtechnik 10:84ea3ec0660d 745 }
BETZtechnik 10:84ea3ec0660d 746 if (servo1Pos > maxTwitch){
BETZtechnik 10:84ea3ec0660d 747 servo1Pos = maxTwitch;
BETZtechnik 10:84ea3ec0660d 748 twitchDirection = 1; //reverse direction
BETZtechnik 10:84ea3ec0660d 749 }
BETZtechnik 10:84ea3ec0660d 750 lastTwitchMove = tw.read_ms();
BETZtechnik 10:84ea3ec0660d 751 }
BETZtechnik 10:84ea3ec0660d 752
BETZtechnik 10:84ea3ec0660d 753 if (twitchDirection == 1){ // going down
BETZtechnik 10:84ea3ec0660d 754 servo1Pos = servo1Pos - 100; // add variable amount of Ms to the servo signal
BETZtechnik 10:84ea3ec0660d 755 if (servo1Pos < minServo){
BETZtechnik 10:84ea3ec0660d 756 servo1Pos = minServo;
BETZtechnik 10:84ea3ec0660d 757 twitchDirection = 0; //reverse direction
BETZtechnik 10:84ea3ec0660d 758 }
BETZtechnik 10:84ea3ec0660d 759 if (servo1Pos < minTwitch){
BETZtechnik 10:84ea3ec0660d 760 servo1Pos = minTwitch;
BETZtechnik 10:84ea3ec0660d 761 twitchDirection = 0; //reverse direction
BETZtechnik 10:84ea3ec0660d 762 }
BETZtechnik 10:84ea3ec0660d 763 lastTwitchMove = tw.read_ms();
BETZtechnik 10:84ea3ec0660d 764 }
BETZtechnik 10:84ea3ec0660d 765 }
BETZtechnik 10:84ea3ec0660d 766 }
BETZtechnik 10:84ea3ec0660d 767
BETZtechnik 10:84ea3ec0660d 768 myServo.pulsewidth_us(servo1Pos);
BETZtechnik 1:e8452b75301e 769 }
BETZtechnik 1:e8452b75301e 770
BETZtechnik 0:09419d572e90 771
BETZtechnik 1:e8452b75301e 772 //********************** update display values **********************************************
BETZtechnik 1:e8452b75301e 773
BETZtechnik 1:e8452b75301e 774
BETZtechnik 1:e8452b75301e 775 if (currentToolNo != lastToolNo){
BETZtechnik 1:e8452b75301e 776 /*
BETZtechnik 1:e8452b75301e 777 tft.fillRect(103, 2, 55,25, BLACK);
BETZtechnik 1:e8452b75301e 778 tft.setCursor(105, 4);
BETZtechnik 1:e8452b75301e 779 */
BETZtechnik 1:e8452b75301e 780 tft.setCursor(22, 28);
BETZtechnik 0:09419d572e90 781 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 782 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 783 tft.printf("%d", lastToolNo);
BETZtechnik 1:e8452b75301e 784 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 785 //tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 786 // tft.printf("T");
BETZtechnik 1:e8452b75301e 787 tft.setCursor(22,28);
BETZtechnik 1:e8452b75301e 788 tft.printf("%d", currentToolNo);
BETZtechnik 1:e8452b75301e 789 tempLastAngle = 0;
BETZtechnik 1:e8452b75301e 790 eeprom.read(currentToolNo, &tempLastAngle);
BETZtechnik 1:e8452b75301e 791 lastAngle = (int)tempLastAngle;
BETZtechnik 10:84ea3ec0660d 792 lastAngle = lastAngle - 90; // Not storing signed int, so signed value is 90 less than what was stored to memory.
BETZtechnik 1:e8452b75301e 793 n1Pos = lastAngle;
BETZtechnik 1:e8452b75301e 794 eeprom.write(currentToolAddress, currentToolNo);
BETZtechnik 10:84ea3ec0660d 795 wait(0.1);
BETZtechnik 10:84ea3ec0660d 796 tempLastTwitch = 0;
BETZtechnik 10:84ea3ec0660d 797 eeprom.read(currentToolNo + 150, &tempLastTwitch); // pull up previous twitch setting.
BETZtechnik 10:84ea3ec0660d 798 twitch = (int)tempLastTwitch;
BETZtechnik 1:e8452b75301e 799 lastToolNo = currentToolNo;
BETZtechnik 0:09419d572e90 800 }
BETZtechnik 0:09419d572e90 801
BETZtechnik 0:09419d572e90 802
BETZtechnik 0:09419d572e90 803 if (n1Pos != lastN1Pos){
BETZtechnik 1:e8452b75301e 804 tft.setCursor(40, 4);
BETZtechnik 0:09419d572e90 805 tft.setTextColor(BLACK);
BETZtechnik 0:09419d572e90 806 tft.setTextSize(2);
BETZtechnik 0:09419d572e90 807 tft.printf("%d", lastN1Pos);
BETZtechnik 1:e8452b75301e 808 tft.setCursor(40,4);
BETZtechnik 1:e8452b75301e 809 tft.setTextColor(GREEN);
BETZtechnik 0:09419d572e90 810 tft.setTextSize(2);
BETZtechnik 0:09419d572e90 811 tft.printf("%d", n1Pos);
BETZtechnik 10:84ea3ec0660d 812 eeprom.write(currentToolNo, n1Pos + 90); // store new angle in eeprom, add 90 because its an unsigned value.
BETZtechnik 1:e8452b75301e 813 //wait(0.1); // adjusted from 1
BETZtechnik 1:e8452b75301e 814 dir=1;
BETZtechnik 1:e8452b75301e 815 device.printf("N");
BETZtechnik 10:84ea3ec0660d 816 device.printf("%d", n1Pos + 190); //send over RS485 add 190 so no negative values and always 3 digits.
BETZtechnik 1:e8452b75301e 817 //device.printf("N245"); // TEST!!!
BETZtechnik 10:84ea3ec0660d 818 // tft.setCursor(100, 50);
BETZtechnik 10:84ea3ec0660d 819 // tft.setTextSize(2);
BETZtechnik 10:84ea3ec0660d 820 // tft.printf("%d", n1Pos + 145);
BETZtechnik 10:84ea3ec0660d 821 wait(0.05);
BETZtechnik 1:e8452b75301e 822 dir=0;
BETZtechnik 0:09419d572e90 823 lastN1Pos = n1Pos;
BETZtechnik 0:09419d572e90 824 }
BETZtechnik 1:e8452b75301e 825
BETZtechnik 10:84ea3ec0660d 826 if (n2Pos != lastN2Pos && numNoz == 2){
BETZtechnik 10:84ea3ec0660d 827 tft.setCursor(115, 4);
BETZtechnik 10:84ea3ec0660d 828 tft.setTextColor(BLACK);
BETZtechnik 10:84ea3ec0660d 829 tft.setTextSize(2);
BETZtechnik 10:84ea3ec0660d 830 tft.printf("%d", lastN2Pos);
BETZtechnik 10:84ea3ec0660d 831 tft.setCursor(115, 4);
BETZtechnik 10:84ea3ec0660d 832 tft.setTextColor(GREEN);
BETZtechnik 10:84ea3ec0660d 833 tft.setTextSize(2);
BETZtechnik 10:84ea3ec0660d 834 tft.printf("%d", n2Pos);
BETZtechnik 10:84ea3ec0660d 835 eeprom.write(currentToolNo +100, n2Pos + 90); // store new angle in eeprom, add 90 because its an unsigned value.
BETZtechnik 10:84ea3ec0660d 836 //wait(0.1); // adjusted from 1
BETZtechnik 10:84ea3ec0660d 837 dir=1;
BETZtechnik 10:84ea3ec0660d 838 device.printf("N");
BETZtechnik 10:84ea3ec0660d 839 device.printf("%d", n2Pos + 390); //send over RS485 add 390 so no negative values and always 3 digits.
BETZtechnik 10:84ea3ec0660d 840 //device.printf("N245"); // TEST!!!
BETZtechnik 10:84ea3ec0660d 841 // tft.setCursor(100, 50);
BETZtechnik 10:84ea3ec0660d 842 // tft.setTextSize(2);
BETZtechnik 10:84ea3ec0660d 843 // tft.printf("%d", n1Pos + 145);
BETZtechnik 10:84ea3ec0660d 844 wait(0.05);
BETZtechnik 10:84ea3ec0660d 845 dir=0;
BETZtechnik 10:84ea3ec0660d 846 lastN2Pos = n2Pos;
BETZtechnik 10:84ea3ec0660d 847 }
BETZtechnik 10:84ea3ec0660d 848
BETZtechnik 10:84ea3ec0660d 849
BETZtechnik 1:e8452b75301e 850 if (numTools != lastNumTools){
BETZtechnik 10:84ea3ec0660d 851 tft.setCursor(133, 95);
BETZtechnik 1:e8452b75301e 852 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 853 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 854 tft.printf("%d", lastNumTools);
BETZtechnik 10:84ea3ec0660d 855 tft.setCursor(133,95);
BETZtechnik 1:e8452b75301e 856 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 857 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 858 tft.printf("%d", numTools);
BETZtechnik 1:e8452b75301e 859 eeprom.write(numToolsAddress, numTools); // store new angle in eeprom, add 45 because its an unsigned value.
BETZtechnik 1:e8452b75301e 860 //wait(0.1); // adjusted from 1
BETZtechnik 1:e8452b75301e 861 lastNumTools = numTools;
BETZtechnik 1:e8452b75301e 862 }
BETZtechnik 0:09419d572e90 863
BETZtechnik 1:e8452b75301e 864 if (numNoz != lastNumNoz){
BETZtechnik 10:84ea3ec0660d 865 tft.setCursor(133, 110);
BETZtechnik 1:e8452b75301e 866 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 867 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 868 tft.printf("%d", lastNumNoz);
BETZtechnik 10:84ea3ec0660d 869 tft.setCursor(133,110);
BETZtechnik 1:e8452b75301e 870 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 871 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 872 tft.printf("%d", numNoz);
BETZtechnik 1:e8452b75301e 873 eeprom.write(numNozAddress, numNoz); // store new angle in eeprom, add 45 because its an unsigned value.
BETZtechnik 1:e8452b75301e 874 //wait(0.1); // adjusted from 1
BETZtechnik 1:e8452b75301e 875
BETZtechnik 1:e8452b75301e 876 if (numNoz == 2){
BETZtechnik 1:e8452b75301e 877 tft.setCursor(80, 4);
BETZtechnik 1:e8452b75301e 878 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 879 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 880 tft.printf("N2");
BETZtechnik 1:e8452b75301e 881 tft.drawRect(78,2,74,18,WHITE);
BETZtechnik 1:e8452b75301e 882 }
BETZtechnik 1:e8452b75301e 883 if (numNoz == 1){
BETZtechnik 1:e8452b75301e 884 tft.setCursor(80, 4);
BETZtechnik 1:e8452b75301e 885 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 886 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 887 tft.printf("N2");
BETZtechnik 10:84ea3ec0660d 888 tft.setCursor(115, 4);
BETZtechnik 10:84ea3ec0660d 889 tft.printf("%d", n2Pos);
BETZtechnik 1:e8452b75301e 890 tft.drawRect(78,2,74,18,BLACK);
BETZtechnik 1:e8452b75301e 891 }
BETZtechnik 1:e8452b75301e 892 lastNumNoz = numNoz;
BETZtechnik 1:e8452b75301e 893 }
BETZtechnik 10:84ea3ec0660d 894
BETZtechnik 10:84ea3ec0660d 895
BETZtechnik 10:84ea3ec0660d 896 if (twitch != lastTwitch){
BETZtechnik 10:84ea3ec0660d 897 tft.setCursor(52, 50);
BETZtechnik 10:84ea3ec0660d 898 tft.setTextColor(BLACK);
BETZtechnik 10:84ea3ec0660d 899 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 900 tft.printf("%d", lastTwitch);
BETZtechnik 10:84ea3ec0660d 901 tft.setCursor(52, 50);
BETZtechnik 10:84ea3ec0660d 902 tft.setTextColor(GREEN);
BETZtechnik 10:84ea3ec0660d 903 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 904 tft.printf("%d", twitch);
BETZtechnik 10:84ea3ec0660d 905 dir=1;
BETZtechnik 10:84ea3ec0660d 906 device.printf("W");
BETZtechnik 10:84ea3ec0660d 907 device.printf("%d", twitch);
BETZtechnik 10:84ea3ec0660d 908 wait(0.05);
BETZtechnik 10:84ea3ec0660d 909 dir=0;
BETZtechnik 10:84ea3ec0660d 910 eeprom.write(currentToolNo +150, twitch); // store new twitch setting
BETZtechnik 10:84ea3ec0660d 911 lastN1Pos = 999; // trigger sending servo values to module
BETZtechnik 10:84ea3ec0660d 912 lastN2Pos = 999;
BETZtechnik 10:84ea3ec0660d 913 lastTwitch = twitch;
BETZtechnik 10:84ea3ec0660d 914 }
BETZtechnik 0:09419d572e90 915
BETZtechnik 10:84ea3ec0660d 916 if (sync != lastSync){ //
BETZtechnik 10:84ea3ec0660d 917 tft.setCursor(52, 65);
BETZtechnik 10:84ea3ec0660d 918 tft.setTextColor(BLACK);
BETZtechnik 10:84ea3ec0660d 919 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 920 if (lastSync == 0){
BETZtechnik 10:84ea3ec0660d 921 tft.printf("OFF");
BETZtechnik 10:84ea3ec0660d 922 }
BETZtechnik 10:84ea3ec0660d 923 if (lastSync == 1){
BETZtechnik 10:84ea3ec0660d 924 tft.printf("ON");
BETZtechnik 10:84ea3ec0660d 925 }
BETZtechnik 10:84ea3ec0660d 926 if (lastSync == 2){
BETZtechnik 10:84ea3ec0660d 927 tft.printf("REV");
BETZtechnik 10:84ea3ec0660d 928 }
BETZtechnik 10:84ea3ec0660d 929 tft.setCursor(52, 65);
BETZtechnik 10:84ea3ec0660d 930 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 931 if (sync == 0){
BETZtechnik 10:84ea3ec0660d 932 tft.setTextColor(WHITE);
BETZtechnik 10:84ea3ec0660d 933 tft.printf("OFF");
BETZtechnik 10:84ea3ec0660d 934 }
BETZtechnik 10:84ea3ec0660d 935 if (sync == 1){
BETZtechnik 10:84ea3ec0660d 936 tft.setTextColor(GREEN);
BETZtechnik 10:84ea3ec0660d 937 tft.printf("ON");
BETZtechnik 10:84ea3ec0660d 938 }
BETZtechnik 10:84ea3ec0660d 939 if (sync == 2){
BETZtechnik 10:84ea3ec0660d 940 tft.setTextColor(RED);
BETZtechnik 10:84ea3ec0660d 941 tft.printf("REV");
BETZtechnik 10:84ea3ec0660d 942 }
BETZtechnik 10:84ea3ec0660d 943 eeprom.write(syncAddress, sync); // store new twitch setting
BETZtechnik 10:84ea3ec0660d 944 syncSpread = (n2Pos - n1Pos);
BETZtechnik 10:84ea3ec0660d 945
BETZtechnik 10:84ea3ec0660d 946 lastSync = sync;
BETZtechnik 10:84ea3ec0660d 947
BETZtechnik 10:84ea3ec0660d 948 }
BETZtechnik 1:e8452b75301e 949
BETZtechnik 10:84ea3ec0660d 950 if (n1Dir != lastN1Dir){ //
BETZtechnik 10:84ea3ec0660d 951 tft.setCursor(132, 50);
BETZtechnik 1:e8452b75301e 952 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 953 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 954 if (lastN1Dir == 0){
BETZtechnik 10:84ea3ec0660d 955 tft.printf("NOR");
BETZtechnik 10:84ea3ec0660d 956 }
BETZtechnik 10:84ea3ec0660d 957 if (lastN1Dir == 1){
BETZtechnik 10:84ea3ec0660d 958 tft.printf("REV");
BETZtechnik 10:84ea3ec0660d 959 }
BETZtechnik 10:84ea3ec0660d 960 tft.setCursor(132, 50);
BETZtechnik 10:84ea3ec0660d 961 if (n1Dir == 0){
BETZtechnik 10:84ea3ec0660d 962 tft.setTextColor(WHITE);
BETZtechnik 10:84ea3ec0660d 963 tft.printf("NOR");
BETZtechnik 10:84ea3ec0660d 964 }
BETZtechnik 10:84ea3ec0660d 965 if (n1Dir == 1){
BETZtechnik 10:84ea3ec0660d 966 tft.setTextColor(GREEN);
BETZtechnik 10:84ea3ec0660d 967 tft.printf("REV");
BETZtechnik 10:84ea3ec0660d 968 }
BETZtechnik 10:84ea3ec0660d 969 eeprom.write(n1DirAddress, n1Dir); // store new twitch setting
BETZtechnik 10:84ea3ec0660d 970 lastN1Dir = n1Dir;
BETZtechnik 10:84ea3ec0660d 971 }
BETZtechnik 10:84ea3ec0660d 972
BETZtechnik 10:84ea3ec0660d 973 if (n2Dir != lastN2Dir){ //
BETZtechnik 10:84ea3ec0660d 974 tft.setCursor(132, 65);
BETZtechnik 10:84ea3ec0660d 975 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 976 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 977 if (lastN2Dir == 0){
BETZtechnik 10:84ea3ec0660d 978 tft.printf("NOR");
BETZtechnik 10:84ea3ec0660d 979 }
BETZtechnik 10:84ea3ec0660d 980 if (lastN2Dir == 1){
BETZtechnik 10:84ea3ec0660d 981 tft.printf("REV");
BETZtechnik 10:84ea3ec0660d 982 }
BETZtechnik 10:84ea3ec0660d 983 tft.setCursor(132, 65);
BETZtechnik 10:84ea3ec0660d 984 if (n2Dir == 0){
BETZtechnik 10:84ea3ec0660d 985 tft.setTextColor(WHITE);
BETZtechnik 10:84ea3ec0660d 986 tft.printf("NOR");
BETZtechnik 10:84ea3ec0660d 987 }
BETZtechnik 10:84ea3ec0660d 988 if (n2Dir == 1){
BETZtechnik 10:84ea3ec0660d 989 tft.setTextColor(GREEN);
BETZtechnik 10:84ea3ec0660d 990 tft.printf("REV");
BETZtechnik 10:84ea3ec0660d 991 }
BETZtechnik 10:84ea3ec0660d 992 eeprom.write(n2DirAddress, n2Dir); // store new twitch setting
BETZtechnik 10:84ea3ec0660d 993 lastN2Dir = n2Dir;
BETZtechnik 10:84ea3ec0660d 994 }
BETZtechnik 10:84ea3ec0660d 995
BETZtechnik 10:84ea3ec0660d 996 if (version != lastVersion){ //
BETZtechnik 10:84ea3ec0660d 997 tft.setCursor(132, 80);
BETZtechnik 10:84ea3ec0660d 998 tft.setTextColor(BLACK);
BETZtechnik 10:84ea3ec0660d 999 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 1000 if (lastVersion == 0){
BETZtechnik 10:84ea3ec0660d 1001 tft.printf("BAS");
BETZtechnik 10:84ea3ec0660d 1002 }
BETZtechnik 10:84ea3ec0660d 1003 if (lastVersion == 1){
BETZtechnik 10:84ea3ec0660d 1004 tft.printf("PRO");
BETZtechnik 10:84ea3ec0660d 1005 }
BETZtechnik 10:84ea3ec0660d 1006 tft.setCursor(132, 80);
BETZtechnik 10:84ea3ec0660d 1007 if (version == 0){
BETZtechnik 10:84ea3ec0660d 1008 tft.setTextColor(WHITE);
BETZtechnik 10:84ea3ec0660d 1009 tft.setTextSize(1);
BETZtechnik 10:84ea3ec0660d 1010 tft.printf("BAS");
BETZtechnik 10:84ea3ec0660d 1011 }
BETZtechnik 10:84ea3ec0660d 1012 if (version == 1){
BETZtechnik 10:84ea3ec0660d 1013 tft.setTextColor(RED);
BETZtechnik 10:84ea3ec0660d 1014 tft.printf("PRO");
BETZtechnik 10:84ea3ec0660d 1015 }
BETZtechnik 10:84ea3ec0660d 1016 eeprom.write(versionAddress, version); // store new twitch setting
BETZtechnik 10:84ea3ec0660d 1017 lastVersion = version;
BETZtechnik 10:84ea3ec0660d 1018 }
BETZtechnik 10:84ea3ec0660d 1019
BETZtechnik 1:e8452b75301e 1020
BETZtechnik 1:e8452b75301e 1021 //**************************** RS485 link ***************************************
BETZtechnik 7:d3c19705042b 1022
BETZtechnik 3:bbbacfd62773 1023 while (device.readable())
BETZtechnik 3:bbbacfd62773 1024 {
BETZtechnik 3:bbbacfd62773 1025 c = device.getc();
BETZtechnik 3:bbbacfd62773 1026
BETZtechnik 3:bbbacfd62773 1027 if (c == 'T'){ // Actual tool number sent over serial
BETZtechnik 3:bbbacfd62773 1028
BETZtechnik 3:bbbacfd62773 1029 index = 1;
BETZtechnik 3:bbbacfd62773 1030
BETZtechnik 3:bbbacfd62773 1031 }
BETZtechnik 3:bbbacfd62773 1032
BETZtechnik 3:bbbacfd62773 1033
BETZtechnik 3:bbbacfd62773 1034 if (c == 'M'){ // magazine + or - sent over serial
BETZtechnik 3:bbbacfd62773 1035 index = 5;
BETZtechnik 3:bbbacfd62773 1036 }
BETZtechnik 3:bbbacfd62773 1037
BETZtechnik 3:bbbacfd62773 1038 if (index == 1){
BETZtechnik 3:bbbacfd62773 1039 c = device.getc();
BETZtechnik 3:bbbacfd62773 1040 if (c == '1'){ // hundreds place to know we are sending 3 digits
BETZtechnik 3:bbbacfd62773 1041 index = 2;
BETZtechnik 3:bbbacfd62773 1042 }
BETZtechnik 3:bbbacfd62773 1043 }
BETZtechnik 3:bbbacfd62773 1044
BETZtechnik 3:bbbacfd62773 1045
BETZtechnik 3:bbbacfd62773 1046
BETZtechnik 3:bbbacfd62773 1047 if (index == 2){ // tool number 10's column
BETZtechnik 3:bbbacfd62773 1048
BETZtechnik 3:bbbacfd62773 1049 c = device.getc();
BETZtechnik 3:bbbacfd62773 1050
BETZtechnik 3:bbbacfd62773 1051 if (c=='0'){
BETZtechnik 3:bbbacfd62773 1052 Tens = 0;
BETZtechnik 3:bbbacfd62773 1053 index = 4;
BETZtechnik 3:bbbacfd62773 1054
BETZtechnik 3:bbbacfd62773 1055 }
BETZtechnik 3:bbbacfd62773 1056
BETZtechnik 3:bbbacfd62773 1057 else if (c=='1'){
BETZtechnik 3:bbbacfd62773 1058 Tens = 1;
BETZtechnik 3:bbbacfd62773 1059 index = 4;
BETZtechnik 3:bbbacfd62773 1060
BETZtechnik 3:bbbacfd62773 1061 }
BETZtechnik 3:bbbacfd62773 1062
BETZtechnik 3:bbbacfd62773 1063 else if (c=='2'){
BETZtechnik 3:bbbacfd62773 1064 Tens = 2;
BETZtechnik 3:bbbacfd62773 1065 index = 4;
BETZtechnik 3:bbbacfd62773 1066
BETZtechnik 3:bbbacfd62773 1067 }
BETZtechnik 3:bbbacfd62773 1068
BETZtechnik 3:bbbacfd62773 1069 else if (c=='3'){
BETZtechnik 3:bbbacfd62773 1070 Tens = 3;
BETZtechnik 3:bbbacfd62773 1071 index = 4;
BETZtechnik 3:bbbacfd62773 1072
BETZtechnik 3:bbbacfd62773 1073 }
BETZtechnik 3:bbbacfd62773 1074
BETZtechnik 3:bbbacfd62773 1075 else if (c=='4'){
BETZtechnik 3:bbbacfd62773 1076 Tens = 4;
BETZtechnik 3:bbbacfd62773 1077 index = 4;
BETZtechnik 3:bbbacfd62773 1078 }
BETZtechnik 3:bbbacfd62773 1079
BETZtechnik 3:bbbacfd62773 1080 else if (c=='5'){ //max number of tools is 50
BETZtechnik 3:bbbacfd62773 1081 Tens = 5;
BETZtechnik 3:bbbacfd62773 1082 index = 4;
BETZtechnik 3:bbbacfd62773 1083 }
BETZtechnik 3:bbbacfd62773 1084
BETZtechnik 3:bbbacfd62773 1085 }
BETZtechnik 3:bbbacfd62773 1086
BETZtechnik 3:bbbacfd62773 1087 if (index == 4){ // tool number ones column
BETZtechnik 3:bbbacfd62773 1088
BETZtechnik 3:bbbacfd62773 1089 c = device.getc();
BETZtechnik 3:bbbacfd62773 1090
BETZtechnik 3:bbbacfd62773 1091 if (c=='0'){
BETZtechnik 3:bbbacfd62773 1092 Ones = 0;
BETZtechnik 3:bbbacfd62773 1093
BETZtechnik 3:bbbacfd62773 1094 }
BETZtechnik 3:bbbacfd62773 1095
BETZtechnik 3:bbbacfd62773 1096 else if (c=='1'){
BETZtechnik 3:bbbacfd62773 1097 Ones = 1;
BETZtechnik 3:bbbacfd62773 1098
BETZtechnik 3:bbbacfd62773 1099
BETZtechnik 3:bbbacfd62773 1100 }
BETZtechnik 3:bbbacfd62773 1101
BETZtechnik 3:bbbacfd62773 1102 else if (c=='2'){
BETZtechnik 3:bbbacfd62773 1103 Ones = 2;
BETZtechnik 3:bbbacfd62773 1104
BETZtechnik 3:bbbacfd62773 1105 }
BETZtechnik 3:bbbacfd62773 1106
BETZtechnik 3:bbbacfd62773 1107 else if (c=='3'){
BETZtechnik 3:bbbacfd62773 1108 Ones = 3;
BETZtechnik 3:bbbacfd62773 1109
BETZtechnik 3:bbbacfd62773 1110 }
BETZtechnik 3:bbbacfd62773 1111
BETZtechnik 3:bbbacfd62773 1112 else if (c=='4'){
BETZtechnik 3:bbbacfd62773 1113 Ones = 4;
BETZtechnik 3:bbbacfd62773 1114 }
BETZtechnik 3:bbbacfd62773 1115
BETZtechnik 3:bbbacfd62773 1116 else if (c=='5'){
BETZtechnik 3:bbbacfd62773 1117 Ones = 5;
BETZtechnik 3:bbbacfd62773 1118 }
BETZtechnik 3:bbbacfd62773 1119
BETZtechnik 3:bbbacfd62773 1120 else if (c=='6'){
BETZtechnik 3:bbbacfd62773 1121 Ones = 6;
BETZtechnik 3:bbbacfd62773 1122 }
BETZtechnik 3:bbbacfd62773 1123
BETZtechnik 3:bbbacfd62773 1124 else if (c=='7'){
BETZtechnik 3:bbbacfd62773 1125 Ones = 7;
BETZtechnik 3:bbbacfd62773 1126 }
BETZtechnik 3:bbbacfd62773 1127
BETZtechnik 3:bbbacfd62773 1128 else if (c=='8'){
BETZtechnik 3:bbbacfd62773 1129 Ones = 8;
BETZtechnik 3:bbbacfd62773 1130 }
BETZtechnik 3:bbbacfd62773 1131
BETZtechnik 3:bbbacfd62773 1132 else if (c=='9'){
BETZtechnik 3:bbbacfd62773 1133 Ones = 9;
BETZtechnik 3:bbbacfd62773 1134 }
BETZtechnik 3:bbbacfd62773 1135
BETZtechnik 3:bbbacfd62773 1136 else if (c=='0'){
BETZtechnik 3:bbbacfd62773 1137 Ones = 0;
BETZtechnik 3:bbbacfd62773 1138 }
BETZtechnik 3:bbbacfd62773 1139
BETZtechnik 3:bbbacfd62773 1140
BETZtechnik 3:bbbacfd62773 1141
BETZtechnik 3:bbbacfd62773 1142 serialToolNumber = ((Tens * 10) + Ones);
BETZtechnik 3:bbbacfd62773 1143
BETZtechnik 3:bbbacfd62773 1144 currentToolNo = serialToolNumber; // update tool number
BETZtechnik 3:bbbacfd62773 1145
BETZtechnik 3:bbbacfd62773 1146 index=0;
BETZtechnik 3:bbbacfd62773 1147
BETZtechnik 3:bbbacfd62773 1148 }
BETZtechnik 3:bbbacfd62773 1149
BETZtechnik 3:bbbacfd62773 1150 if (index == 5){ // magazine monitoring
BETZtechnik 3:bbbacfd62773 1151
BETZtechnik 3:bbbacfd62773 1152
BETZtechnik 3:bbbacfd62773 1153
BETZtechnik 3:bbbacfd62773 1154 c = device.getc();
BETZtechnik 3:bbbacfd62773 1155
BETZtechnik 7:d3c19705042b 1156 if (c == '+'){
BETZtechnik 3:bbbacfd62773 1157
BETZtechnik 3:bbbacfd62773 1158
BETZtechnik 3:bbbacfd62773 1159 currentToolNo = (currentToolNo +1);
BETZtechnik 3:bbbacfd62773 1160 if (currentToolNo > numTools){
BETZtechnik 3:bbbacfd62773 1161 currentToolNo = 1;
BETZtechnik 3:bbbacfd62773 1162 }
BETZtechnik 3:bbbacfd62773 1163 index = 0;
BETZtechnik 3:bbbacfd62773 1164 }
BETZtechnik 7:d3c19705042b 1165 else if (c == '-'){
BETZtechnik 10:84ea3ec0660d 1166 /*
BETZtechnik 3:bbbacfd62773 1167 tft.setTextColor(WHITE);
BETZtechnik 3:bbbacfd62773 1168 tft.setCursor(100, 100);
BETZtechnik 3:bbbacfd62773 1169 tft.printf("1");
BETZtechnik 10:84ea3ec0660d 1170 */
BETZtechnik 3:bbbacfd62773 1171 currentToolNo = (currentToolNo -1);
BETZtechnik 3:bbbacfd62773 1172 if (currentToolNo < 1){
BETZtechnik 3:bbbacfd62773 1173 currentToolNo = numTools;
BETZtechnik 3:bbbacfd62773 1174 }
BETZtechnik 3:bbbacfd62773 1175 index = 0;
BETZtechnik 3:bbbacfd62773 1176 }
BETZtechnik 3:bbbacfd62773 1177
BETZtechnik 3:bbbacfd62773 1178 }
BETZtechnik 3:bbbacfd62773 1179 }
BETZtechnik 7:d3c19705042b 1180
BETZtechnik 1:e8452b75301e 1181 }
BETZtechnik 1:e8452b75301e 1182 }
BETZtechnik 3:bbbacfd62773 1183