Display code

Dependencies:   mbed reScale RotaryEncoder RPG Adafruit_ST7735 Adafruit_GFX PinDetect Ee24xx08 mRotaryEncoder

Committer:
BETZtechnik
Date:
Tue Feb 19 05:56:39 2019 +0000
Revision:
4:d3c19705042b
Parent:
3:5f3bb4ab449a
Child:
5:69155b34efd6
232 working;

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 0:09419d572e90 6
BETZtechnik 0:09419d572e90 7
BETZtechnik 0:09419d572e90 8 // DISPLAY INIT:
BETZtechnik 0:09419d572e90 9
BETZtechnik 0:09419d572e90 10 #define BLACK 0x0000
BETZtechnik 0:09419d572e90 11 #define BLUE 0x001F
BETZtechnik 0:09419d572e90 12 #define RED 0xF800
BETZtechnik 0:09419d572e90 13 #define GREEN 0x07E0
BETZtechnik 0:09419d572e90 14 #define CYAN 0x07FF
BETZtechnik 0:09419d572e90 15 #define MAGENTA 0xF81F
BETZtechnik 0:09419d572e90 16 #define YELLOW 0xFFE0
BETZtechnik 0:09419d572e90 17 #define WHITE 0xFFFF
BETZtechnik 0:09419d572e90 18
BETZtechnik 1:e8452b75301e 19 #define currentToolAddress 51
BETZtechnik 1:e8452b75301e 20 #define numToolsAddress 52
BETZtechnik 1:e8452b75301e 21 #define numNozAddress 53
BETZtechnik 0:09419d572e90 22
BETZtechnik 0:09419d572e90 23
BETZtechnik 1:e8452b75301e 24 //DigitalOut myled(P1_13);
BETZtechnik 1:e8452b75301e 25
BETZtechnik 0:09419d572e90 26
BETZtechnik 0:09419d572e90 27 I2C iic(P0_5, P0_4);
BETZtechnik 3:5f3bb4ab449a 28 Serial device(P0_14, P0_13, 19200); // RS 485 TX RX?
BETZtechnik 1:e8452b75301e 29
BETZtechnik 1:e8452b75301e 30 DigitalOut dir(P0_21);
BETZtechnik 1:e8452b75301e 31
BETZtechnik 0:09419d572e90 32
BETZtechnik 0:09419d572e90 33 Ee24xx08 eeprom(&iic);
BETZtechnik 0:09419d572e90 34
BETZtechnik 1:e8452b75301e 35 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 36
BETZtechnik 0:09419d572e90 37 reScale servo1Scale(-45,0,750,1800); //19850 is 1.0v from voltage divider at 10k.
BETZtechnik 0:09419d572e90 38
BETZtechnik 1:e8452b75301e 39 PwmOut myServo(P1_13); //display board
BETZtechnik 1:e8452b75301e 40 //PwmOut myServo(D4);
BETZtechnik 0:09419d572e90 41
BETZtechnik 1:e8452b75301e 42 //DigitalIn tUpButton(P2_11);
BETZtechnik 1:e8452b75301e 43 //DigitalIn tDownButton(P2_12);
BETZtechnik 1:e8452b75301e 44 DigitalIn encoderFalseButton(P0_23); // FALSE!!! push button of knob
BETZtechnik 1:e8452b75301e 45 DigitalIn encoderButton(P0_20); // push button of knob
BETZtechnik 1:e8452b75301e 46 DigitalIn backButton(P0_15); // back button
BETZtechnik 0:09419d572e90 47
BETZtechnik 1:e8452b75301e 48 Timer t;
BETZtechnik 1:e8452b75301e 49 int lastBackButton;
BETZtechnik 1:e8452b75301e 50 int lastDownButton;
BETZtechnik 1:e8452b75301e 51 int lastEncoderButton;
BETZtechnik 1:e8452b75301e 52
BETZtechnik 1:e8452b75301e 53 int dirt = 0;
BETZtechnik 0:09419d572e90 54
BETZtechnik 0:09419d572e90 55 int main() {
BETZtechnik 1:e8452b75301e 56
BETZtechnik 1:e8452b75301e 57 // ************************************** SCREEN INIT *************************************************
BETZtechnik 1:e8452b75301e 58
BETZtechnik 1:e8452b75301e 59 tft.initR(INITR_GREENTAB); // initialize a ST7735S chip, black tab
BETZtechnik 1:e8452b75301e 60
BETZtechnik 1:e8452b75301e 61 tft.setRotation(3);
BETZtechnik 1:e8452b75301e 62 tft.fillScreen(BLACK);
BETZtechnik 1:e8452b75301e 63 tft.setCursor(30,120);
BETZtechnik 1:e8452b75301e 64 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 65 tft.setTextWrap(false);
BETZtechnik 1:e8452b75301e 66 tft.printf("AccuBlast v0");
BETZtechnik 1:e8452b75301e 67
BETZtechnik 1:e8452b75301e 68 tft.setCursor(4, 4);
BETZtechnik 1:e8452b75301e 69 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 70 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 71 tft.printf("N1");
BETZtechnik 1:e8452b75301e 72
BETZtechnik 1:e8452b75301e 73 tft.setCursor(80, 4);
BETZtechnik 1:e8452b75301e 74 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 75 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 76 tft.printf("N2");
BETZtechnik 1:e8452b75301e 77
BETZtechnik 1:e8452b75301e 78 tft.setCursor(4, 28);
BETZtechnik 1:e8452b75301e 79 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 80 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 81 tft.printf("T");
BETZtechnik 1:e8452b75301e 82
BETZtechnik 1:e8452b75301e 83 tft.setCursor(4, 50);
BETZtechnik 1:e8452b75301e 84 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 85 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 86 tft.printf("Nozzle");
BETZtechnik 1:e8452b75301e 87
BETZtechnik 1:e8452b75301e 88 tft.setCursor(4, 65);
BETZtechnik 1:e8452b75301e 89 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 90 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 91 tft.printf("Res.");
BETZtechnik 1:e8452b75301e 92
BETZtechnik 1:e8452b75301e 93 tft.setCursor(4, 80);
BETZtechnik 1:e8452b75301e 94 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 95 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 96 tft.printf("Res.");
BETZtechnik 1:e8452b75301e 97
BETZtechnik 1:e8452b75301e 98 tft.setCursor(4, 95);
BETZtechnik 1:e8452b75301e 99 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 100 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 101 tft.printf("Num Tls");
BETZtechnik 1:e8452b75301e 102
BETZtechnik 1:e8452b75301e 103 tft.setCursor(4, 110);
BETZtechnik 1:e8452b75301e 104 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 105 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 106 tft.printf("Num Noz");
BETZtechnik 1:e8452b75301e 107
BETZtechnik 1:e8452b75301e 108 // **************************************************************************************************************
BETZtechnik 1:e8452b75301e 109
BETZtechnik 1:e8452b75301e 110 int received = 9;
BETZtechnik 2:bbbacfd62773 111 int serialCounter = 0;
BETZtechnik 4:d3c19705042b 112 int index = 0;
BETZtechnik 1:e8452b75301e 113
BETZtechnik 1:e8452b75301e 114 int count = 0;
BETZtechnik 1:e8452b75301e 115 int maxCount = 7; //max number of menu items
BETZtechnik 1:e8452b75301e 116 int lastCount = 99;
BETZtechnik 1:e8452b75301e 117
BETZtechnik 1:e8452b75301e 118 //************* Pull previous setting from eeprom *******************
BETZtechnik 1:e8452b75301e 119
BETZtechnik 1:e8452b75301e 120 char tempToolNo = 0; // last tool in spindle
BETZtechnik 1:e8452b75301e 121 eeprom.read(currentToolAddress, &tempToolNo);
BETZtechnik 1:e8452b75301e 122 int currentToolNo = (int)tempToolNo;
BETZtechnik 1:e8452b75301e 123
BETZtechnik 1:e8452b75301e 124 char tempNumTools = 0; // number of tools in ATC
BETZtechnik 1:e8452b75301e 125 eeprom.read(numToolsAddress, &tempNumTools);
BETZtechnik 1:e8452b75301e 126 int numTools = (int)tempNumTools;
BETZtechnik 1:e8452b75301e 127
BETZtechnik 1:e8452b75301e 128 char tempNumNoz = 0; // number of nozzles installed
BETZtechnik 1:e8452b75301e 129 eeprom.read(numNozAddress, &tempNumNoz);
BETZtechnik 1:e8452b75301e 130 int numNoz = (int)tempNumNoz;
BETZtechnik 1:e8452b75301e 131
BETZtechnik 1:e8452b75301e 132 char tempLastAngle = 0; // last angle of last tool in spindle
BETZtechnik 1:e8452b75301e 133 eeprom.read(currentToolNo, &tempLastAngle);
BETZtechnik 1:e8452b75301e 134 int lastAngle = (int)tempLastAngle;
BETZtechnik 1:e8452b75301e 135 lastAngle = lastAngle - 45; // Not storing signed int, so signed value is 45 less than what was stored to memory.
BETZtechnik 1:e8452b75301e 136
BETZtechnik 1:e8452b75301e 137 //******************** Button debounce *********************************
BETZtechnik 0:09419d572e90 138
BETZtechnik 0:09419d572e90 139
BETZtechnik 1:e8452b75301e 140
BETZtechnik 1:e8452b75301e 141 backButton.mode(PullUp); // button pull up
BETZtechnik 1:e8452b75301e 142 //tDownButton.mode(PullUp); // button pull up
BETZtechnik 1:e8452b75301e 143 encoderButton.mode(PullUp);
BETZtechnik 1:e8452b75301e 144 encoderFalseButton.mode(PullUp);
BETZtechnik 0:09419d572e90 145
BETZtechnik 1:e8452b75301e 146 t.start(); // starts timer
BETZtechnik 1:e8452b75301e 147 lastBackButton = t.read_ms();
BETZtechnik 1:e8452b75301e 148 lastDownButton = t.read_ms();
BETZtechnik 1:e8452b75301e 149 lastEncoderButton = t.read_ms();
BETZtechnik 1:e8452b75301e 150
BETZtechnik 1:e8452b75301e 151 //****************************************************************************
BETZtechnik 0:09419d572e90 152
BETZtechnik 1:e8452b75301e 153 int lastToolNo = 99;
BETZtechnik 1:e8452b75301e 154 int lastNumTools = -1; // trigger to write eeprom value for number of tools
BETZtechnik 0:09419d572e90 155
BETZtechnik 1:e8452b75301e 156 int lastNumNoz = 0; //trigger display for number of nozzles after startup
BETZtechnik 0:09419d572e90 157
BETZtechnik 1:e8452b75301e 158 int n1Pos = lastAngle; //Set servo to last known postition prior to power off
BETZtechnik 0:09419d572e90 159 int lastN1Pos = 150;
BETZtechnik 0:09419d572e90 160
BETZtechnik 0:09419d572e90 161 int servo1Pos = 0;
BETZtechnik 0:09419d572e90 162
BETZtechnik 1:e8452b75301e 163 RPG rpg1(P2_2,P1_20,P0_23); // RPG (PinName pA, PinName pB, PinName pPB)P0_23 is unconnected!! ;
BETZtechnik 1:e8452b75301e 164
BETZtechnik 1:e8452b75301e 165 myServo.period_ms(20);
BETZtechnik 0:09419d572e90 166
BETZtechnik 1:e8452b75301e 167 /*
BETZtechnik 1:e8452b75301e 168 char t1Ang = 200;
BETZtechnik 1:e8452b75301e 169 char t1Read = 0;
BETZtechnik 1:e8452b75301e 170
BETZtechnik 1:e8452b75301e 171 eeprom.write(1, t1Ang);
BETZtechnik 1:e8452b75301e 172 wait(1);
BETZtechnik 1:e8452b75301e 173 eeprom.read(1, &t1Read);
BETZtechnik 0:09419d572e90 174
BETZtechnik 0:09419d572e90 175
BETZtechnik 0:09419d572e90 176 tft.setCursor(30,110);
BETZtechnik 0:09419d572e90 177 tft.setTextColor(WHITE);
BETZtechnik 0:09419d572e90 178 tft.setTextWrap(true);
BETZtechnik 1:e8452b75301e 179 // tft.printf("%s\r\n",t1Read);
BETZtechnik 1:e8452b75301e 180 tft.printf("%d", currentTool);
BETZtechnik 1:e8452b75301e 181 */
BETZtechnik 1:e8452b75301e 182
BETZtechnik 1:e8452b75301e 183 uint8_t c = 0; // for 485 link
BETZtechnik 2:bbbacfd62773 184
BETZtechnik 2:bbbacfd62773 185
BETZtechnik 2:bbbacfd62773 186 int serialToolNumber = 0;
BETZtechnik 2:bbbacfd62773 187 int stage = 0; // for serial parsing
BETZtechnik 2:bbbacfd62773 188 int Tens = 0;
BETZtechnik 2:bbbacfd62773 189 int Ones = 0;
BETZtechnik 2:bbbacfd62773 190
BETZtechnik 2:bbbacfd62773 191 dir = 0;
BETZtechnik 0:09419d572e90 192
BETZtechnik 0:09419d572e90 193 while(1) {
BETZtechnik 0:09419d572e90 194
BETZtechnik 2:bbbacfd62773 195 /*
BETZtechnik 2:bbbacfd62773 196 while (device.readable())
BETZtechnik 2:bbbacfd62773 197 {
BETZtechnik 2:bbbacfd62773 198 c = device.getc();
BETZtechnik 2:bbbacfd62773 199
BETZtechnik 2:bbbacfd62773 200
BETZtechnik 2:bbbacfd62773 201 if (c == '+'){
BETZtechnik 2:bbbacfd62773 202 currentToolNo = currentToolNo +1;
BETZtechnik 2:bbbacfd62773 203 if (currentToolNo > numTools){
BETZtechnik 2:bbbacfd62773 204 currentToolNo = 1;
BETZtechnik 2:bbbacfd62773 205 }
BETZtechnik 2:bbbacfd62773 206 }
BETZtechnik 2:bbbacfd62773 207
BETZtechnik 2:bbbacfd62773 208 else if (c == '-'){
BETZtechnik 2:bbbacfd62773 209 currentToolNo = currentToolNo - 1;
BETZtechnik 2:bbbacfd62773 210 if (currentToolNo > 1){
BETZtechnik 2:bbbacfd62773 211 currentToolNo = numTools;
BETZtechnik 2:bbbacfd62773 212 }
BETZtechnik 2:bbbacfd62773 213 }
BETZtechnik 2:bbbacfd62773 214 }
BETZtechnik 2:bbbacfd62773 215 */
BETZtechnik 4:d3c19705042b 216
BETZtechnik 4:d3c19705042b 217 /*
BETZtechnik 2:bbbacfd62773 218 while (device.readable())
BETZtechnik 2:bbbacfd62773 219 {
BETZtechnik 2:bbbacfd62773 220
BETZtechnik 2:bbbacfd62773 221
BETZtechnik 2:bbbacfd62773 222 c = device.getc();
BETZtechnik 2:bbbacfd62773 223
BETZtechnik 2:bbbacfd62773 224 if (c == 'M'){
BETZtechnik 2:bbbacfd62773 225 // stage = 1;
BETZtechnik 2:bbbacfd62773 226
BETZtechnik 2:bbbacfd62773 227 c = device.getc();
BETZtechnik 2:bbbacfd62773 228 if (c == '+'){
BETZtechnik 2:bbbacfd62773 229
BETZtechnik 2:bbbacfd62773 230 // tft.setTextColor(WHITE);
BETZtechnik 2:bbbacfd62773 231 // tft.setCursor(100, 100);
BETZtechnik 2:bbbacfd62773 232 // tft.printf("%d", c);
BETZtechnik 2:bbbacfd62773 233 currentToolNo = currentToolNo +1;
BETZtechnik 2:bbbacfd62773 234 if (currentToolNo > numTools){
BETZtechnik 2:bbbacfd62773 235 currentToolNo = 1;
BETZtechnik 2:bbbacfd62773 236 }
BETZtechnik 2:bbbacfd62773 237 }
BETZtechnik 2:bbbacfd62773 238
BETZtechnik 2:bbbacfd62773 239 else if (c == '-'){
BETZtechnik 2:bbbacfd62773 240 currentToolNo = currentToolNo - 1;
BETZtechnik 2:bbbacfd62773 241 if (currentToolNo < 1){
BETZtechnik 2:bbbacfd62773 242 currentToolNo = numTools;
BETZtechnik 2:bbbacfd62773 243 }
BETZtechnik 2:bbbacfd62773 244 }
BETZtechnik 2:bbbacfd62773 245
BETZtechnik 2:bbbacfd62773 246 }
BETZtechnik 2:bbbacfd62773 247 }
BETZtechnik 2:bbbacfd62773 248
BETZtechnik 4:d3c19705042b 249 */
BETZtechnik 2:bbbacfd62773 250
BETZtechnik 2:bbbacfd62773 251
BETZtechnik 2:bbbacfd62773 252
BETZtechnik 1:e8452b75301e 253 //myled = 1;
BETZtechnik 1:e8452b75301e 254
BETZtechnik 1:e8452b75301e 255 if (t.read() > 1200){ // timer can only hold 30 min, so reset after 20
BETZtechnik 1:e8452b75301e 256 t.reset();
BETZtechnik 1:e8452b75301e 257 lastBackButton = t.read_ms();
BETZtechnik 1:e8452b75301e 258 lastDownButton = t.read_ms();
BETZtechnik 1:e8452b75301e 259 lastEncoderButton = t.read_ms();
BETZtechnik 1:e8452b75301e 260 }
BETZtechnik 1:e8452b75301e 261
BETZtechnik 1:e8452b75301e 262 if (backButton == 0){ //Back button was pressed so back to default selection
BETZtechnik 1:e8452b75301e 263 count = 0;
BETZtechnik 1:e8452b75301e 264 }
BETZtechnik 1:e8452b75301e 265
BETZtechnik 1:e8452b75301e 266 if (encoderButton == 0){
BETZtechnik 1:e8452b75301e 267 if (t.read_ms() > (lastEncoderButton + 200)){
BETZtechnik 1:e8452b75301e 268 count = count + 1; //Reset count if PB pressed
BETZtechnik 1:e8452b75301e 269 }
BETZtechnik 1:e8452b75301e 270 if (count > maxCount){
BETZtechnik 1:e8452b75301e 271 count = 0;
BETZtechnik 1:e8452b75301e 272 }
BETZtechnik 1:e8452b75301e 273 lastEncoderButton = t.read_ms();
BETZtechnik 1:e8452b75301e 274
BETZtechnik 1:e8452b75301e 275 if (count > maxCount){
BETZtechnik 1:e8452b75301e 276 count = 0;
BETZtechnik 1:e8452b75301e 277 }
BETZtechnik 1:e8452b75301e 278 }
BETZtechnik 0:09419d572e90 279
BETZtechnik 1:e8452b75301e 280 //****************** ENCODER ACTIONS ************************************************
BETZtechnik 1:e8452b75301e 281 if (count == 0){ // knob controls servo value
BETZtechnik 1:e8452b75301e 282 dirt = rpg1.dir(); //Get Dir
BETZtechnik 1:e8452b75301e 283 n1Pos = n1Pos + dirt; //Ad Dirt to n1pos
BETZtechnik 1:e8452b75301e 284 if (n1Pos > 0){
BETZtechnik 1:e8452b75301e 285 n1Pos = 0;
BETZtechnik 1:e8452b75301e 286 }
BETZtechnik 1:e8452b75301e 287 if (n1Pos < -45){
BETZtechnik 1:e8452b75301e 288 n1Pos = -45;
BETZtechnik 1:e8452b75301e 289 }
BETZtechnik 1:e8452b75301e 290 }
BETZtechnik 1:e8452b75301e 291
BETZtechnik 1:e8452b75301e 292 if (count == 2){ //knob controls tool number
BETZtechnik 1:e8452b75301e 293 dirt = rpg1.dir(); //Get Dir
BETZtechnik 1:e8452b75301e 294 currentToolNo = currentToolNo + dirt; //Ad Dirt to n1pos
BETZtechnik 1:e8452b75301e 295 if (currentToolNo > numTools){
BETZtechnik 1:e8452b75301e 296 currentToolNo = numTools;
BETZtechnik 1:e8452b75301e 297 }
BETZtechnik 1:e8452b75301e 298 if (currentToolNo < 1){
BETZtechnik 1:e8452b75301e 299 currentToolNo = 1;
BETZtechnik 1:e8452b75301e 300 }
BETZtechnik 1:e8452b75301e 301 }
BETZtechnik 1:e8452b75301e 302
BETZtechnik 1:e8452b75301e 303 if (count == 6){ //knob controls tool number
BETZtechnik 1:e8452b75301e 304 dirt = rpg1.dir(); //Get Dir
BETZtechnik 1:e8452b75301e 305 numTools = numTools + dirt; //Ad Dirt to n1pos
BETZtechnik 1:e8452b75301e 306 if (numTools > 50){
BETZtechnik 1:e8452b75301e 307 numTools = 50;
BETZtechnik 1:e8452b75301e 308 }
BETZtechnik 1:e8452b75301e 309 if (numTools < 1){
BETZtechnik 1:e8452b75301e 310 numTools = 1;
BETZtechnik 1:e8452b75301e 311 }
BETZtechnik 1:e8452b75301e 312 }
BETZtechnik 1:e8452b75301e 313
BETZtechnik 1:e8452b75301e 314 if (count == 7){ //knob controls tool number
BETZtechnik 1:e8452b75301e 315 dirt = rpg1.dir(); //Get Dir
BETZtechnik 1:e8452b75301e 316 numNoz = numNoz + dirt; //Ad Dirt to n1pos
BETZtechnik 1:e8452b75301e 317 if (numNoz> 2){
BETZtechnik 1:e8452b75301e 318 numNoz = 2;
BETZtechnik 1:e8452b75301e 319 }
BETZtechnik 1:e8452b75301e 320 if (numNoz < 1){
BETZtechnik 1:e8452b75301e 321 numNoz = 1;
BETZtechnik 1:e8452b75301e 322 }
BETZtechnik 1:e8452b75301e 323 }
BETZtechnik 1:e8452b75301e 324
BETZtechnik 1:e8452b75301e 325
BETZtechnik 1:e8452b75301e 326 // ************* Rectangles for identifying active selection *****************************
BETZtechnik 1:e8452b75301e 327
BETZtechnik 1:e8452b75301e 328 if (count == 0){ // N1 adjust
BETZtechnik 1:e8452b75301e 329 tft.drawRect(2,2,74,18,GREEN);
BETZtechnik 1:e8452b75301e 330 }
BETZtechnik 1:e8452b75301e 331 else{
BETZtechnik 1:e8452b75301e 332 tft.drawRect(2,2,74,18,WHITE);
BETZtechnik 1:e8452b75301e 333 }
BETZtechnik 1:e8452b75301e 334
BETZtechnik 1:e8452b75301e 335 if ((count == 1) && (numNoz == 2)){ // N2 adjust
BETZtechnik 1:e8452b75301e 336 tft.drawRect(78,2,74,18,GREEN);
BETZtechnik 1:e8452b75301e 337 }
BETZtechnik 1:e8452b75301e 338
BETZtechnik 1:e8452b75301e 339 if ((count != 1) && (numNoz == 2)){ // N2 adjust
BETZtechnik 1:e8452b75301e 340 tft.drawRect(78,2,74,18,WHITE);
BETZtechnik 1:e8452b75301e 341 }
BETZtechnik 1:e8452b75301e 342
BETZtechnik 1:e8452b75301e 343
BETZtechnik 1:e8452b75301e 344 if (count == 2){
BETZtechnik 1:e8452b75301e 345 tft.drawRect(20,26,28,18,GREEN);
BETZtechnik 1:e8452b75301e 346 }
BETZtechnik 1:e8452b75301e 347 else{
BETZtechnik 1:e8452b75301e 348 tft.drawRect(20,26,28,18,BLACK);
BETZtechnik 1:e8452b75301e 349 }
BETZtechnik 1:e8452b75301e 350
BETZtechnik 1:e8452b75301e 351 if (count == 3){
BETZtechnik 1:e8452b75301e 352 tft.drawRect(53,48,20,12,GREEN);
BETZtechnik 1:e8452b75301e 353 }
BETZtechnik 1:e8452b75301e 354 else{
BETZtechnik 1:e8452b75301e 355 tft.drawRect(53,48,20,12,BLACK);
BETZtechnik 1:e8452b75301e 356 }
BETZtechnik 1:e8452b75301e 357
BETZtechnik 1:e8452b75301e 358 if (count == 4){
BETZtechnik 1:e8452b75301e 359 tft.drawRect(53,63,20,12,GREEN);
BETZtechnik 1:e8452b75301e 360 }
BETZtechnik 1:e8452b75301e 361 else{
BETZtechnik 1:e8452b75301e 362 tft.drawRect(53,63,20,12,BLACK);
BETZtechnik 1:e8452b75301e 363 }
BETZtechnik 1:e8452b75301e 364
BETZtechnik 1:e8452b75301e 365 if (count == 5){
BETZtechnik 1:e8452b75301e 366 tft.drawRect(53,78,20,12,GREEN);
BETZtechnik 1:e8452b75301e 367 }
BETZtechnik 1:e8452b75301e 368 else{
BETZtechnik 1:e8452b75301e 369 tft.drawRect(53,78,20,12,BLACK);
BETZtechnik 1:e8452b75301e 370 }
BETZtechnik 1:e8452b75301e 371
BETZtechnik 1:e8452b75301e 372 if (count == 6){
BETZtechnik 1:e8452b75301e 373 tft.drawRect(53,93,20,12,GREEN);
BETZtechnik 1:e8452b75301e 374 }
BETZtechnik 1:e8452b75301e 375 else{
BETZtechnik 1:e8452b75301e 376 tft.drawRect(53,93,20,12,BLACK);
BETZtechnik 1:e8452b75301e 377 }
BETZtechnik 1:e8452b75301e 378
BETZtechnik 1:e8452b75301e 379 if (count == 7){
BETZtechnik 1:e8452b75301e 380 tft.drawRect(53,108,20,12,GREEN);
BETZtechnik 1:e8452b75301e 381 }
BETZtechnik 1:e8452b75301e 382 else{
BETZtechnik 1:e8452b75301e 383 tft.drawRect(53,108,20,12,BLACK);
BETZtechnik 1:e8452b75301e 384 }
BETZtechnik 1:e8452b75301e 385
BETZtechnik 1:e8452b75301e 386 //****************************************************************************************
BETZtechnik 1:e8452b75301e 387
BETZtechnik 1:e8452b75301e 388 servo1Pos = servo1Scale.from(n1Pos);
BETZtechnik 0:09419d572e90 389
BETZtechnik 0:09419d572e90 390 myServo.pulsewidth_us(servo1Pos);
BETZtechnik 0:09419d572e90 391
BETZtechnik 1:e8452b75301e 392 //********************** update display values **********************************************
BETZtechnik 1:e8452b75301e 393
BETZtechnik 1:e8452b75301e 394
BETZtechnik 1:e8452b75301e 395 if (currentToolNo != lastToolNo){
BETZtechnik 1:e8452b75301e 396 /*
BETZtechnik 1:e8452b75301e 397 tft.fillRect(103, 2, 55,25, BLACK);
BETZtechnik 1:e8452b75301e 398 tft.setCursor(105, 4);
BETZtechnik 1:e8452b75301e 399 */
BETZtechnik 1:e8452b75301e 400 tft.setCursor(22, 28);
BETZtechnik 0:09419d572e90 401 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 402 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 403 tft.printf("%d", lastToolNo);
BETZtechnik 1:e8452b75301e 404 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 405 //tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 406 // tft.printf("T");
BETZtechnik 1:e8452b75301e 407 tft.setCursor(22,28);
BETZtechnik 1:e8452b75301e 408 tft.printf("%d", currentToolNo);
BETZtechnik 1:e8452b75301e 409 tempLastAngle = 0;
BETZtechnik 1:e8452b75301e 410 eeprom.read(currentToolNo, &tempLastAngle);
BETZtechnik 1:e8452b75301e 411 lastAngle = (int)tempLastAngle;
BETZtechnik 1:e8452b75301e 412 lastAngle = lastAngle - 45; // Not storing signed int, so signed value is 45 less than what was stored to memory.
BETZtechnik 1:e8452b75301e 413 //RotaryEncoder knob1(D2, D3, -45, 45, lastAngle); // RotaryEncoder(PinName pin1_name, PinName pin2_name, int min = 0, int max = 100, int val = 50);
BETZtechnik 1:e8452b75301e 414 //knob1.val = lastAngle;
BETZtechnik 1:e8452b75301e 415 n1Pos = lastAngle;
BETZtechnik 1:e8452b75301e 416 eeprom.write(currentToolAddress, currentToolNo);
BETZtechnik 1:e8452b75301e 417 //wait(0.1);
BETZtechnik 1:e8452b75301e 418 lastToolNo = currentToolNo;
BETZtechnik 0:09419d572e90 419 }
BETZtechnik 0:09419d572e90 420
BETZtechnik 0:09419d572e90 421
BETZtechnik 0:09419d572e90 422 if (n1Pos != lastN1Pos){
BETZtechnik 1:e8452b75301e 423 tft.setCursor(40, 4);
BETZtechnik 0:09419d572e90 424 tft.setTextColor(BLACK);
BETZtechnik 0:09419d572e90 425 tft.setTextSize(2);
BETZtechnik 0:09419d572e90 426 tft.printf("%d", lastN1Pos);
BETZtechnik 1:e8452b75301e 427 tft.setCursor(40,4);
BETZtechnik 1:e8452b75301e 428 tft.setTextColor(GREEN);
BETZtechnik 0:09419d572e90 429 tft.setTextSize(2);
BETZtechnik 0:09419d572e90 430 tft.printf("%d", n1Pos);
BETZtechnik 1:e8452b75301e 431 eeprom.write(currentToolNo, n1Pos + 45); // store new angle in eeprom, add 45 because its an unsigned value.
BETZtechnik 1:e8452b75301e 432 //wait(0.1); // adjusted from 1
BETZtechnik 1:e8452b75301e 433 dir=1;
BETZtechnik 1:e8452b75301e 434 device.printf("N");
BETZtechnik 1:e8452b75301e 435 device.printf("%d", n1Pos + 145); //send over RS485 add 145 so no negative values and always 3 digits. 1xx for N1, 2xx for nozzle 2
BETZtechnik 1:e8452b75301e 436 //device.printf("N245"); // TEST!!!
BETZtechnik 1:e8452b75301e 437 tft.setCursor(100, 50);
BETZtechnik 1:e8452b75301e 438 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 439 tft.printf("%d", n1Pos + 145);
BETZtechnik 1:e8452b75301e 440 //wait(0.05);
BETZtechnik 1:e8452b75301e 441 dir=0;
BETZtechnik 0:09419d572e90 442 lastN1Pos = n1Pos;
BETZtechnik 0:09419d572e90 443 }
BETZtechnik 1:e8452b75301e 444
BETZtechnik 1:e8452b75301e 445 if (numTools != lastNumTools){
BETZtechnik 1:e8452b75301e 446 tft.setCursor(55, 95);
BETZtechnik 1:e8452b75301e 447 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 448 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 449 tft.printf("%d", lastNumTools);
BETZtechnik 1:e8452b75301e 450 tft.setCursor(55,95);
BETZtechnik 1:e8452b75301e 451 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 452 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 453 tft.printf("%d", numTools);
BETZtechnik 1:e8452b75301e 454 eeprom.write(numToolsAddress, numTools); // store new angle in eeprom, add 45 because its an unsigned value.
BETZtechnik 1:e8452b75301e 455 //wait(0.1); // adjusted from 1
BETZtechnik 1:e8452b75301e 456 lastNumTools = numTools;
BETZtechnik 1:e8452b75301e 457 }
BETZtechnik 0:09419d572e90 458
BETZtechnik 1:e8452b75301e 459 if (numNoz != lastNumNoz){
BETZtechnik 1:e8452b75301e 460 tft.setCursor(55, 110);
BETZtechnik 1:e8452b75301e 461 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 462 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 463 tft.printf("%d", lastNumNoz);
BETZtechnik 1:e8452b75301e 464 tft.setCursor(55,110);
BETZtechnik 1:e8452b75301e 465 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 466 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 467 tft.printf("%d", numNoz);
BETZtechnik 1:e8452b75301e 468 eeprom.write(numNozAddress, numNoz); // store new angle in eeprom, add 45 because its an unsigned value.
BETZtechnik 1:e8452b75301e 469 //wait(0.1); // adjusted from 1
BETZtechnik 1:e8452b75301e 470
BETZtechnik 1:e8452b75301e 471 if (numNoz == 2){
BETZtechnik 1:e8452b75301e 472 tft.setCursor(80, 4);
BETZtechnik 1:e8452b75301e 473 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 474 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 475 tft.printf("N2");
BETZtechnik 1:e8452b75301e 476 tft.drawRect(78,2,74,18,WHITE);
BETZtechnik 1:e8452b75301e 477 }
BETZtechnik 1:e8452b75301e 478 if (numNoz == 1){
BETZtechnik 1:e8452b75301e 479 tft.setCursor(80, 4);
BETZtechnik 1:e8452b75301e 480 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 481 tft.setTextSize(2);
BETZtechnik 1:e8452b75301e 482 tft.printf("N2");
BETZtechnik 1:e8452b75301e 483 tft.drawRect(78,2,74,18,BLACK);
BETZtechnik 1:e8452b75301e 484 }
BETZtechnik 1:e8452b75301e 485 lastNumNoz = numNoz;
BETZtechnik 1:e8452b75301e 486 }
BETZtechnik 0:09419d572e90 487
BETZtechnik 0:09419d572e90 488
BETZtechnik 0:09419d572e90 489
BETZtechnik 1:e8452b75301e 490
BETZtechnik 1:e8452b75301e 491 if (count != lastCount){
BETZtechnik 1:e8452b75301e 492 tft.setCursor(150, 100);
BETZtechnik 1:e8452b75301e 493 tft.setTextColor(BLACK);
BETZtechnik 1:e8452b75301e 494 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 495 tft.printf("%d", lastCount);
BETZtechnik 1:e8452b75301e 496 tft.setCursor(150,100);
BETZtechnik 1:e8452b75301e 497 tft.setTextColor(RED);
BETZtechnik 1:e8452b75301e 498 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 499 tft.printf("%d", count);
BETZtechnik 1:e8452b75301e 500 lastCount = count;
BETZtechnik 1:e8452b75301e 501 }
BETZtechnik 1:e8452b75301e 502
BETZtechnik 1:e8452b75301e 503 //**************************** RS485 link ***************************************
BETZtechnik 1:e8452b75301e 504
BETZtechnik 1:e8452b75301e 505 //dir =0; // receiver enable
BETZtechnik 2:bbbacfd62773 506 /*
BETZtechnik 1:e8452b75301e 507 if (device.readable())
BETZtechnik 1:e8452b75301e 508 {
BETZtechnik 1:e8452b75301e 509 c = device.getc();
BETZtechnik 1:e8452b75301e 510 if(c=='B'){
BETZtechnik 1:e8452b75301e 511 received = 1;
BETZtechnik 1:e8452b75301e 512 }
BETZtechnik 1:e8452b75301e 513 }
BETZtechnik 1:e8452b75301e 514
BETZtechnik 1:e8452b75301e 515 if (received == 1){
BETZtechnik 1:e8452b75301e 516 tft.setCursor(150, 80);
BETZtechnik 1:e8452b75301e 517 tft.setTextColor(WHITE);
BETZtechnik 1:e8452b75301e 518 tft.setTextSize(1);
BETZtechnik 1:e8452b75301e 519 tft.printf("1");
BETZtechnik 1:e8452b75301e 520 }
BETZtechnik 1:e8452b75301e 521
BETZtechnik 2:bbbacfd62773 522 */
BETZtechnik 2:bbbacfd62773 523
BETZtechnik 4:d3c19705042b 524
BETZtechnik 2:bbbacfd62773 525 while (device.readable())
BETZtechnik 2:bbbacfd62773 526 {
BETZtechnik 2:bbbacfd62773 527 c = device.getc();
BETZtechnik 2:bbbacfd62773 528
BETZtechnik 2:bbbacfd62773 529 if (c == 'T'){ // Actual tool number sent over serial
BETZtechnik 2:bbbacfd62773 530
BETZtechnik 2:bbbacfd62773 531 index = 1;
BETZtechnik 2:bbbacfd62773 532
BETZtechnik 2:bbbacfd62773 533 }
BETZtechnik 2:bbbacfd62773 534
BETZtechnik 2:bbbacfd62773 535
BETZtechnik 2:bbbacfd62773 536 if (c == 'M'){ // magazine + or - sent over serial
BETZtechnik 2:bbbacfd62773 537 index = 5;
BETZtechnik 2:bbbacfd62773 538 }
BETZtechnik 2:bbbacfd62773 539
BETZtechnik 2:bbbacfd62773 540 if (index == 1){
BETZtechnik 2:bbbacfd62773 541 c = device.getc();
BETZtechnik 2:bbbacfd62773 542 if (c == '1'){ // hundreds place to know we are sending 3 digits
BETZtechnik 2:bbbacfd62773 543 index = 2;
BETZtechnik 2:bbbacfd62773 544 }
BETZtechnik 2:bbbacfd62773 545 }
BETZtechnik 2:bbbacfd62773 546
BETZtechnik 2:bbbacfd62773 547
BETZtechnik 2:bbbacfd62773 548
BETZtechnik 2:bbbacfd62773 549 if (index == 2){ // tool number 10's column
BETZtechnik 2:bbbacfd62773 550
BETZtechnik 2:bbbacfd62773 551 c = device.getc();
BETZtechnik 2:bbbacfd62773 552
BETZtechnik 2:bbbacfd62773 553 if (c=='0'){
BETZtechnik 2:bbbacfd62773 554 Tens = 0;
BETZtechnik 2:bbbacfd62773 555 index = 4;
BETZtechnik 2:bbbacfd62773 556
BETZtechnik 2:bbbacfd62773 557 }
BETZtechnik 2:bbbacfd62773 558
BETZtechnik 2:bbbacfd62773 559 else if (c=='1'){
BETZtechnik 2:bbbacfd62773 560 Tens = 1;
BETZtechnik 2:bbbacfd62773 561 index = 4;
BETZtechnik 2:bbbacfd62773 562
BETZtechnik 2:bbbacfd62773 563 }
BETZtechnik 2:bbbacfd62773 564
BETZtechnik 2:bbbacfd62773 565 else if (c=='2'){
BETZtechnik 2:bbbacfd62773 566 Tens = 2;
BETZtechnik 2:bbbacfd62773 567 index = 4;
BETZtechnik 2:bbbacfd62773 568
BETZtechnik 2:bbbacfd62773 569 }
BETZtechnik 2:bbbacfd62773 570
BETZtechnik 2:bbbacfd62773 571 else if (c=='3'){
BETZtechnik 2:bbbacfd62773 572 Tens = 3;
BETZtechnik 2:bbbacfd62773 573 index = 4;
BETZtechnik 2:bbbacfd62773 574
BETZtechnik 2:bbbacfd62773 575 }
BETZtechnik 2:bbbacfd62773 576
BETZtechnik 2:bbbacfd62773 577 else if (c=='4'){
BETZtechnik 2:bbbacfd62773 578 Tens = 4;
BETZtechnik 2:bbbacfd62773 579 index = 4;
BETZtechnik 2:bbbacfd62773 580 }
BETZtechnik 2:bbbacfd62773 581
BETZtechnik 2:bbbacfd62773 582 else if (c=='5'){ //max number of tools is 50
BETZtechnik 2:bbbacfd62773 583 Tens = 5;
BETZtechnik 2:bbbacfd62773 584 index = 4;
BETZtechnik 2:bbbacfd62773 585 }
BETZtechnik 2:bbbacfd62773 586
BETZtechnik 2:bbbacfd62773 587 }
BETZtechnik 2:bbbacfd62773 588
BETZtechnik 2:bbbacfd62773 589 if (index == 4){ // tool number ones column
BETZtechnik 2:bbbacfd62773 590
BETZtechnik 2:bbbacfd62773 591 c = device.getc();
BETZtechnik 2:bbbacfd62773 592
BETZtechnik 2:bbbacfd62773 593 if (c=='0'){
BETZtechnik 2:bbbacfd62773 594 Ones = 0;
BETZtechnik 2:bbbacfd62773 595
BETZtechnik 2:bbbacfd62773 596 }
BETZtechnik 2:bbbacfd62773 597
BETZtechnik 2:bbbacfd62773 598 else if (c=='1'){
BETZtechnik 2:bbbacfd62773 599 Ones = 1;
BETZtechnik 2:bbbacfd62773 600
BETZtechnik 2:bbbacfd62773 601
BETZtechnik 2:bbbacfd62773 602 }
BETZtechnik 2:bbbacfd62773 603
BETZtechnik 2:bbbacfd62773 604 else if (c=='2'){
BETZtechnik 2:bbbacfd62773 605 Ones = 2;
BETZtechnik 2:bbbacfd62773 606
BETZtechnik 2:bbbacfd62773 607 }
BETZtechnik 2:bbbacfd62773 608
BETZtechnik 2:bbbacfd62773 609 else if (c=='3'){
BETZtechnik 2:bbbacfd62773 610 Ones = 3;
BETZtechnik 2:bbbacfd62773 611
BETZtechnik 2:bbbacfd62773 612 }
BETZtechnik 2:bbbacfd62773 613
BETZtechnik 2:bbbacfd62773 614 else if (c=='4'){
BETZtechnik 2:bbbacfd62773 615 Ones = 4;
BETZtechnik 2:bbbacfd62773 616 }
BETZtechnik 2:bbbacfd62773 617
BETZtechnik 2:bbbacfd62773 618 else if (c=='5'){
BETZtechnik 2:bbbacfd62773 619 Ones = 5;
BETZtechnik 2:bbbacfd62773 620 }
BETZtechnik 2:bbbacfd62773 621
BETZtechnik 2:bbbacfd62773 622 else if (c=='6'){
BETZtechnik 2:bbbacfd62773 623 Ones = 6;
BETZtechnik 2:bbbacfd62773 624 }
BETZtechnik 2:bbbacfd62773 625
BETZtechnik 2:bbbacfd62773 626 else if (c=='7'){
BETZtechnik 2:bbbacfd62773 627 Ones = 7;
BETZtechnik 2:bbbacfd62773 628 }
BETZtechnik 2:bbbacfd62773 629
BETZtechnik 2:bbbacfd62773 630 else if (c=='8'){
BETZtechnik 2:bbbacfd62773 631 Ones = 8;
BETZtechnik 2:bbbacfd62773 632 }
BETZtechnik 2:bbbacfd62773 633
BETZtechnik 2:bbbacfd62773 634 else if (c=='9'){
BETZtechnik 2:bbbacfd62773 635 Ones = 9;
BETZtechnik 2:bbbacfd62773 636 }
BETZtechnik 2:bbbacfd62773 637
BETZtechnik 2:bbbacfd62773 638 else if (c=='0'){
BETZtechnik 2:bbbacfd62773 639 Ones = 0;
BETZtechnik 2:bbbacfd62773 640 }
BETZtechnik 2:bbbacfd62773 641
BETZtechnik 2:bbbacfd62773 642
BETZtechnik 2:bbbacfd62773 643
BETZtechnik 2:bbbacfd62773 644 serialToolNumber = ((Tens * 10) + Ones);
BETZtechnik 2:bbbacfd62773 645
BETZtechnik 2:bbbacfd62773 646 currentToolNo = serialToolNumber; // update tool number
BETZtechnik 2:bbbacfd62773 647
BETZtechnik 2:bbbacfd62773 648 index=0;
BETZtechnik 2:bbbacfd62773 649
BETZtechnik 2:bbbacfd62773 650 }
BETZtechnik 2:bbbacfd62773 651
BETZtechnik 2:bbbacfd62773 652 if (index == 5){ // magazine monitoring
BETZtechnik 2:bbbacfd62773 653
BETZtechnik 2:bbbacfd62773 654
BETZtechnik 2:bbbacfd62773 655
BETZtechnik 2:bbbacfd62773 656 c = device.getc();
BETZtechnik 2:bbbacfd62773 657
BETZtechnik 4:d3c19705042b 658 if (c == '+'){
BETZtechnik 2:bbbacfd62773 659
BETZtechnik 2:bbbacfd62773 660
BETZtechnik 2:bbbacfd62773 661 currentToolNo = (currentToolNo +1);
BETZtechnik 2:bbbacfd62773 662 if (currentToolNo > numTools){
BETZtechnik 2:bbbacfd62773 663 currentToolNo = 1;
BETZtechnik 2:bbbacfd62773 664 }
BETZtechnik 2:bbbacfd62773 665 index = 0;
BETZtechnik 2:bbbacfd62773 666 }
BETZtechnik 4:d3c19705042b 667 else if (c == '-'){
BETZtechnik 2:bbbacfd62773 668
BETZtechnik 2:bbbacfd62773 669 tft.setTextColor(WHITE);
BETZtechnik 2:bbbacfd62773 670 tft.setCursor(100, 100);
BETZtechnik 2:bbbacfd62773 671 tft.printf("1");
BETZtechnik 2:bbbacfd62773 672
BETZtechnik 2:bbbacfd62773 673 currentToolNo = (currentToolNo -1);
BETZtechnik 2:bbbacfd62773 674 if (currentToolNo < 1){
BETZtechnik 2:bbbacfd62773 675 currentToolNo = numTools;
BETZtechnik 2:bbbacfd62773 676 }
BETZtechnik 2:bbbacfd62773 677 index = 0;
BETZtechnik 2:bbbacfd62773 678 }
BETZtechnik 2:bbbacfd62773 679
BETZtechnik 2:bbbacfd62773 680 }
BETZtechnik 2:bbbacfd62773 681 }
BETZtechnik 4:d3c19705042b 682
BETZtechnik 2:bbbacfd62773 683
BETZtechnik 2:bbbacfd62773 684
BETZtechnik 2:bbbacfd62773 685
BETZtechnik 2:bbbacfd62773 686
BETZtechnik 2:bbbacfd62773 687
BETZtechnik 1:e8452b75301e 688
BETZtechnik 1:e8452b75301e 689 }
BETZtechnik 1:e8452b75301e 690 }
BETZtechnik 2:bbbacfd62773 691