Display code

Dependencies:   mbed reScale RotaryEncoder RPG Adafruit_ST7735 Adafruit_GFX PinDetect Ee24xx08 mRotaryEncoder

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