Remote inc coolant nozzle control program
Dependencies: mbed reScale USBDevice
Dependents: Nozzle_inputs Nozzle_display
main.cpp@1:e8452b75301e, 2019-02-08 (annotated)
- Committer:
- BETZtechnik
- Date:
- Fri Feb 08 20:50:00 2019 +0000
- Revision:
- 1:e8452b75301e
- Parent:
- 0:09419d572e90
- Child:
- 3:bbbacfd62773
rs485 working from display to inputs
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:e8452b75301e | 28 | Serial device(P0_14, P0_13, 9600); // 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 | 1:e8452b75301e | 111 | |
BETZtechnik | 1:e8452b75301e | 112 | int count = 0; |
BETZtechnik | 1:e8452b75301e | 113 | int maxCount = 7; //max number of menu items |
BETZtechnik | 1:e8452b75301e | 114 | int lastCount = 99; |
BETZtechnik | 1:e8452b75301e | 115 | |
BETZtechnik | 1:e8452b75301e | 116 | //************* Pull previous setting from eeprom ******************* |
BETZtechnik | 1:e8452b75301e | 117 | |
BETZtechnik | 1:e8452b75301e | 118 | char tempToolNo = 0; // last tool in spindle |
BETZtechnik | 1:e8452b75301e | 119 | eeprom.read(currentToolAddress, &tempToolNo); |
BETZtechnik | 1:e8452b75301e | 120 | int currentToolNo = (int)tempToolNo; |
BETZtechnik | 1:e8452b75301e | 121 | |
BETZtechnik | 1:e8452b75301e | 122 | char tempNumTools = 0; // number of tools in ATC |
BETZtechnik | 1:e8452b75301e | 123 | eeprom.read(numToolsAddress, &tempNumTools); |
BETZtechnik | 1:e8452b75301e | 124 | int numTools = (int)tempNumTools; |
BETZtechnik | 1:e8452b75301e | 125 | |
BETZtechnik | 1:e8452b75301e | 126 | char tempNumNoz = 0; // number of nozzles installed |
BETZtechnik | 1:e8452b75301e | 127 | eeprom.read(numNozAddress, &tempNumNoz); |
BETZtechnik | 1:e8452b75301e | 128 | int numNoz = (int)tempNumNoz; |
BETZtechnik | 1:e8452b75301e | 129 | |
BETZtechnik | 1:e8452b75301e | 130 | char tempLastAngle = 0; // last angle of last tool in spindle |
BETZtechnik | 1:e8452b75301e | 131 | eeprom.read(currentToolNo, &tempLastAngle); |
BETZtechnik | 1:e8452b75301e | 132 | int lastAngle = (int)tempLastAngle; |
BETZtechnik | 1:e8452b75301e | 133 | lastAngle = lastAngle - 45; // Not storing signed int, so signed value is 45 less than what was stored to memory. |
BETZtechnik | 1:e8452b75301e | 134 | |
BETZtechnik | 1:e8452b75301e | 135 | //******************** Button debounce ********************************* |
BETZtechnik | 0:09419d572e90 | 136 | |
BETZtechnik | 0:09419d572e90 | 137 | |
BETZtechnik | 1:e8452b75301e | 138 | |
BETZtechnik | 1:e8452b75301e | 139 | backButton.mode(PullUp); // button pull up |
BETZtechnik | 1:e8452b75301e | 140 | //tDownButton.mode(PullUp); // button pull up |
BETZtechnik | 1:e8452b75301e | 141 | encoderButton.mode(PullUp); |
BETZtechnik | 1:e8452b75301e | 142 | encoderFalseButton.mode(PullUp); |
BETZtechnik | 0:09419d572e90 | 143 | |
BETZtechnik | 1:e8452b75301e | 144 | t.start(); // starts timer |
BETZtechnik | 1:e8452b75301e | 145 | lastBackButton = t.read_ms(); |
BETZtechnik | 1:e8452b75301e | 146 | lastDownButton = t.read_ms(); |
BETZtechnik | 1:e8452b75301e | 147 | lastEncoderButton = t.read_ms(); |
BETZtechnik | 1:e8452b75301e | 148 | |
BETZtechnik | 1:e8452b75301e | 149 | //**************************************************************************** |
BETZtechnik | 0:09419d572e90 | 150 | |
BETZtechnik | 1:e8452b75301e | 151 | int lastToolNo = 99; |
BETZtechnik | 1:e8452b75301e | 152 | int lastNumTools = -1; // trigger to write eeprom value for number of tools |
BETZtechnik | 0:09419d572e90 | 153 | |
BETZtechnik | 1:e8452b75301e | 154 | int lastNumNoz = 0; //trigger display for number of nozzles after startup |
BETZtechnik | 0:09419d572e90 | 155 | |
BETZtechnik | 1:e8452b75301e | 156 | int n1Pos = lastAngle; //Set servo to last known postition prior to power off |
BETZtechnik | 0:09419d572e90 | 157 | int lastN1Pos = 150; |
BETZtechnik | 0:09419d572e90 | 158 | |
BETZtechnik | 0:09419d572e90 | 159 | int servo1Pos = 0; |
BETZtechnik | 0:09419d572e90 | 160 | |
BETZtechnik | 1:e8452b75301e | 161 | RPG rpg1(P2_2,P1_20,P0_23); // RPG (PinName pA, PinName pB, PinName pPB)P0_23 is unconnected!! ; |
BETZtechnik | 1:e8452b75301e | 162 | |
BETZtechnik | 1:e8452b75301e | 163 | myServo.period_ms(20); |
BETZtechnik | 0:09419d572e90 | 164 | |
BETZtechnik | 1:e8452b75301e | 165 | /* |
BETZtechnik | 1:e8452b75301e | 166 | char t1Ang = 200; |
BETZtechnik | 1:e8452b75301e | 167 | char t1Read = 0; |
BETZtechnik | 1:e8452b75301e | 168 | |
BETZtechnik | 1:e8452b75301e | 169 | eeprom.write(1, t1Ang); |
BETZtechnik | 1:e8452b75301e | 170 | wait(1); |
BETZtechnik | 1:e8452b75301e | 171 | eeprom.read(1, &t1Read); |
BETZtechnik | 0:09419d572e90 | 172 | |
BETZtechnik | 0:09419d572e90 | 173 | |
BETZtechnik | 0:09419d572e90 | 174 | tft.setCursor(30,110); |
BETZtechnik | 0:09419d572e90 | 175 | tft.setTextColor(WHITE); |
BETZtechnik | 0:09419d572e90 | 176 | tft.setTextWrap(true); |
BETZtechnik | 1:e8452b75301e | 177 | // tft.printf("%s\r\n",t1Read); |
BETZtechnik | 1:e8452b75301e | 178 | tft.printf("%d", currentTool); |
BETZtechnik | 1:e8452b75301e | 179 | */ |
BETZtechnik | 1:e8452b75301e | 180 | |
BETZtechnik | 1:e8452b75301e | 181 | uint8_t c = 0; // for 485 link |
BETZtechnik | 1:e8452b75301e | 182 | |
BETZtechnik | 0:09419d572e90 | 183 | |
BETZtechnik | 0:09419d572e90 | 184 | while(1) { |
BETZtechnik | 0:09419d572e90 | 185 | |
BETZtechnik | 1:e8452b75301e | 186 | //myled = 1; |
BETZtechnik | 1:e8452b75301e | 187 | |
BETZtechnik | 1:e8452b75301e | 188 | if (t.read() > 1200){ // timer can only hold 30 min, so reset after 20 |
BETZtechnik | 1:e8452b75301e | 189 | t.reset(); |
BETZtechnik | 1:e8452b75301e | 190 | lastBackButton = t.read_ms(); |
BETZtechnik | 1:e8452b75301e | 191 | lastDownButton = t.read_ms(); |
BETZtechnik | 1:e8452b75301e | 192 | lastEncoderButton = t.read_ms(); |
BETZtechnik | 1:e8452b75301e | 193 | } |
BETZtechnik | 1:e8452b75301e | 194 | |
BETZtechnik | 1:e8452b75301e | 195 | if (backButton == 0){ //Back button was pressed so back to default selection |
BETZtechnik | 1:e8452b75301e | 196 | count = 0; |
BETZtechnik | 1:e8452b75301e | 197 | } |
BETZtechnik | 1:e8452b75301e | 198 | |
BETZtechnik | 1:e8452b75301e | 199 | if (encoderButton == 0){ |
BETZtechnik | 1:e8452b75301e | 200 | if (t.read_ms() > (lastEncoderButton + 200)){ |
BETZtechnik | 1:e8452b75301e | 201 | count = count + 1; //Reset count if PB pressed |
BETZtechnik | 1:e8452b75301e | 202 | } |
BETZtechnik | 1:e8452b75301e | 203 | if (count > maxCount){ |
BETZtechnik | 1:e8452b75301e | 204 | count = 0; |
BETZtechnik | 1:e8452b75301e | 205 | } |
BETZtechnik | 1:e8452b75301e | 206 | lastEncoderButton = t.read_ms(); |
BETZtechnik | 1:e8452b75301e | 207 | |
BETZtechnik | 1:e8452b75301e | 208 | if (count > maxCount){ |
BETZtechnik | 1:e8452b75301e | 209 | count = 0; |
BETZtechnik | 1:e8452b75301e | 210 | } |
BETZtechnik | 1:e8452b75301e | 211 | } |
BETZtechnik | 0:09419d572e90 | 212 | |
BETZtechnik | 1:e8452b75301e | 213 | //****************** ENCODER ACTIONS ************************************************ |
BETZtechnik | 1:e8452b75301e | 214 | if (count == 0){ // knob controls servo value |
BETZtechnik | 1:e8452b75301e | 215 | dirt = rpg1.dir(); //Get Dir |
BETZtechnik | 1:e8452b75301e | 216 | n1Pos = n1Pos + dirt; //Ad Dirt to n1pos |
BETZtechnik | 1:e8452b75301e | 217 | if (n1Pos > 0){ |
BETZtechnik | 1:e8452b75301e | 218 | n1Pos = 0; |
BETZtechnik | 1:e8452b75301e | 219 | } |
BETZtechnik | 1:e8452b75301e | 220 | if (n1Pos < -45){ |
BETZtechnik | 1:e8452b75301e | 221 | n1Pos = -45; |
BETZtechnik | 1:e8452b75301e | 222 | } |
BETZtechnik | 1:e8452b75301e | 223 | } |
BETZtechnik | 1:e8452b75301e | 224 | |
BETZtechnik | 1:e8452b75301e | 225 | if (count == 2){ //knob controls tool number |
BETZtechnik | 1:e8452b75301e | 226 | dirt = rpg1.dir(); //Get Dir |
BETZtechnik | 1:e8452b75301e | 227 | currentToolNo = currentToolNo + dirt; //Ad Dirt to n1pos |
BETZtechnik | 1:e8452b75301e | 228 | if (currentToolNo > numTools){ |
BETZtechnik | 1:e8452b75301e | 229 | currentToolNo = numTools; |
BETZtechnik | 1:e8452b75301e | 230 | } |
BETZtechnik | 1:e8452b75301e | 231 | if (currentToolNo < 1){ |
BETZtechnik | 1:e8452b75301e | 232 | currentToolNo = 1; |
BETZtechnik | 1:e8452b75301e | 233 | } |
BETZtechnik | 1:e8452b75301e | 234 | } |
BETZtechnik | 1:e8452b75301e | 235 | |
BETZtechnik | 1:e8452b75301e | 236 | if (count == 6){ //knob controls tool number |
BETZtechnik | 1:e8452b75301e | 237 | dirt = rpg1.dir(); //Get Dir |
BETZtechnik | 1:e8452b75301e | 238 | numTools = numTools + dirt; //Ad Dirt to n1pos |
BETZtechnik | 1:e8452b75301e | 239 | if (numTools > 50){ |
BETZtechnik | 1:e8452b75301e | 240 | numTools = 50; |
BETZtechnik | 1:e8452b75301e | 241 | } |
BETZtechnik | 1:e8452b75301e | 242 | if (numTools < 1){ |
BETZtechnik | 1:e8452b75301e | 243 | numTools = 1; |
BETZtechnik | 1:e8452b75301e | 244 | } |
BETZtechnik | 1:e8452b75301e | 245 | } |
BETZtechnik | 1:e8452b75301e | 246 | |
BETZtechnik | 1:e8452b75301e | 247 | if (count == 7){ //knob controls tool number |
BETZtechnik | 1:e8452b75301e | 248 | dirt = rpg1.dir(); //Get Dir |
BETZtechnik | 1:e8452b75301e | 249 | numNoz = numNoz + dirt; //Ad Dirt to n1pos |
BETZtechnik | 1:e8452b75301e | 250 | if (numNoz> 2){ |
BETZtechnik | 1:e8452b75301e | 251 | numNoz = 2; |
BETZtechnik | 1:e8452b75301e | 252 | } |
BETZtechnik | 1:e8452b75301e | 253 | if (numNoz < 1){ |
BETZtechnik | 1:e8452b75301e | 254 | numNoz = 1; |
BETZtechnik | 1:e8452b75301e | 255 | } |
BETZtechnik | 1:e8452b75301e | 256 | } |
BETZtechnik | 1:e8452b75301e | 257 | |
BETZtechnik | 1:e8452b75301e | 258 | |
BETZtechnik | 1:e8452b75301e | 259 | // ************* Rectangles for identifying active selection ***************************** |
BETZtechnik | 1:e8452b75301e | 260 | |
BETZtechnik | 1:e8452b75301e | 261 | if (count == 0){ // N1 adjust |
BETZtechnik | 1:e8452b75301e | 262 | tft.drawRect(2,2,74,18,GREEN); |
BETZtechnik | 1:e8452b75301e | 263 | } |
BETZtechnik | 1:e8452b75301e | 264 | else{ |
BETZtechnik | 1:e8452b75301e | 265 | tft.drawRect(2,2,74,18,WHITE); |
BETZtechnik | 1:e8452b75301e | 266 | } |
BETZtechnik | 1:e8452b75301e | 267 | |
BETZtechnik | 1:e8452b75301e | 268 | if ((count == 1) && (numNoz == 2)){ // N2 adjust |
BETZtechnik | 1:e8452b75301e | 269 | tft.drawRect(78,2,74,18,GREEN); |
BETZtechnik | 1:e8452b75301e | 270 | } |
BETZtechnik | 1:e8452b75301e | 271 | |
BETZtechnik | 1:e8452b75301e | 272 | if ((count != 1) && (numNoz == 2)){ // N2 adjust |
BETZtechnik | 1:e8452b75301e | 273 | tft.drawRect(78,2,74,18,WHITE); |
BETZtechnik | 1:e8452b75301e | 274 | } |
BETZtechnik | 1:e8452b75301e | 275 | |
BETZtechnik | 1:e8452b75301e | 276 | |
BETZtechnik | 1:e8452b75301e | 277 | if (count == 2){ |
BETZtechnik | 1:e8452b75301e | 278 | tft.drawRect(20,26,28,18,GREEN); |
BETZtechnik | 1:e8452b75301e | 279 | } |
BETZtechnik | 1:e8452b75301e | 280 | else{ |
BETZtechnik | 1:e8452b75301e | 281 | tft.drawRect(20,26,28,18,BLACK); |
BETZtechnik | 1:e8452b75301e | 282 | } |
BETZtechnik | 1:e8452b75301e | 283 | |
BETZtechnik | 1:e8452b75301e | 284 | if (count == 3){ |
BETZtechnik | 1:e8452b75301e | 285 | tft.drawRect(53,48,20,12,GREEN); |
BETZtechnik | 1:e8452b75301e | 286 | } |
BETZtechnik | 1:e8452b75301e | 287 | else{ |
BETZtechnik | 1:e8452b75301e | 288 | tft.drawRect(53,48,20,12,BLACK); |
BETZtechnik | 1:e8452b75301e | 289 | } |
BETZtechnik | 1:e8452b75301e | 290 | |
BETZtechnik | 1:e8452b75301e | 291 | if (count == 4){ |
BETZtechnik | 1:e8452b75301e | 292 | tft.drawRect(53,63,20,12,GREEN); |
BETZtechnik | 1:e8452b75301e | 293 | } |
BETZtechnik | 1:e8452b75301e | 294 | else{ |
BETZtechnik | 1:e8452b75301e | 295 | tft.drawRect(53,63,20,12,BLACK); |
BETZtechnik | 1:e8452b75301e | 296 | } |
BETZtechnik | 1:e8452b75301e | 297 | |
BETZtechnik | 1:e8452b75301e | 298 | if (count == 5){ |
BETZtechnik | 1:e8452b75301e | 299 | tft.drawRect(53,78,20,12,GREEN); |
BETZtechnik | 1:e8452b75301e | 300 | } |
BETZtechnik | 1:e8452b75301e | 301 | else{ |
BETZtechnik | 1:e8452b75301e | 302 | tft.drawRect(53,78,20,12,BLACK); |
BETZtechnik | 1:e8452b75301e | 303 | } |
BETZtechnik | 1:e8452b75301e | 304 | |
BETZtechnik | 1:e8452b75301e | 305 | if (count == 6){ |
BETZtechnik | 1:e8452b75301e | 306 | tft.drawRect(53,93,20,12,GREEN); |
BETZtechnik | 1:e8452b75301e | 307 | } |
BETZtechnik | 1:e8452b75301e | 308 | else{ |
BETZtechnik | 1:e8452b75301e | 309 | tft.drawRect(53,93,20,12,BLACK); |
BETZtechnik | 1:e8452b75301e | 310 | } |
BETZtechnik | 1:e8452b75301e | 311 | |
BETZtechnik | 1:e8452b75301e | 312 | if (count == 7){ |
BETZtechnik | 1:e8452b75301e | 313 | tft.drawRect(53,108,20,12,GREEN); |
BETZtechnik | 1:e8452b75301e | 314 | } |
BETZtechnik | 1:e8452b75301e | 315 | else{ |
BETZtechnik | 1:e8452b75301e | 316 | tft.drawRect(53,108,20,12,BLACK); |
BETZtechnik | 1:e8452b75301e | 317 | } |
BETZtechnik | 1:e8452b75301e | 318 | |
BETZtechnik | 1:e8452b75301e | 319 | //**************************************************************************************** |
BETZtechnik | 1:e8452b75301e | 320 | |
BETZtechnik | 1:e8452b75301e | 321 | servo1Pos = servo1Scale.from(n1Pos); |
BETZtechnik | 0:09419d572e90 | 322 | |
BETZtechnik | 0:09419d572e90 | 323 | myServo.pulsewidth_us(servo1Pos); |
BETZtechnik | 0:09419d572e90 | 324 | |
BETZtechnik | 1:e8452b75301e | 325 | //********************** update display values ********************************************** |
BETZtechnik | 1:e8452b75301e | 326 | |
BETZtechnik | 1:e8452b75301e | 327 | |
BETZtechnik | 1:e8452b75301e | 328 | if (currentToolNo != lastToolNo){ |
BETZtechnik | 1:e8452b75301e | 329 | /* |
BETZtechnik | 1:e8452b75301e | 330 | tft.fillRect(103, 2, 55,25, BLACK); |
BETZtechnik | 1:e8452b75301e | 331 | tft.setCursor(105, 4); |
BETZtechnik | 1:e8452b75301e | 332 | */ |
BETZtechnik | 1:e8452b75301e | 333 | tft.setCursor(22, 28); |
BETZtechnik | 0:09419d572e90 | 334 | tft.setTextColor(BLACK); |
BETZtechnik | 1:e8452b75301e | 335 | tft.setTextSize(2); |
BETZtechnik | 1:e8452b75301e | 336 | tft.printf("%d", lastToolNo); |
BETZtechnik | 1:e8452b75301e | 337 | tft.setTextColor(WHITE); |
BETZtechnik | 1:e8452b75301e | 338 | //tft.setTextSize(2); |
BETZtechnik | 1:e8452b75301e | 339 | // tft.printf("T"); |
BETZtechnik | 1:e8452b75301e | 340 | tft.setCursor(22,28); |
BETZtechnik | 1:e8452b75301e | 341 | tft.printf("%d", currentToolNo); |
BETZtechnik | 1:e8452b75301e | 342 | tempLastAngle = 0; |
BETZtechnik | 1:e8452b75301e | 343 | eeprom.read(currentToolNo, &tempLastAngle); |
BETZtechnik | 1:e8452b75301e | 344 | lastAngle = (int)tempLastAngle; |
BETZtechnik | 1:e8452b75301e | 345 | lastAngle = lastAngle - 45; // Not storing signed int, so signed value is 45 less than what was stored to memory. |
BETZtechnik | 1:e8452b75301e | 346 | //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 | 347 | //knob1.val = lastAngle; |
BETZtechnik | 1:e8452b75301e | 348 | n1Pos = lastAngle; |
BETZtechnik | 1:e8452b75301e | 349 | eeprom.write(currentToolAddress, currentToolNo); |
BETZtechnik | 1:e8452b75301e | 350 | //wait(0.1); |
BETZtechnik | 1:e8452b75301e | 351 | lastToolNo = currentToolNo; |
BETZtechnik | 0:09419d572e90 | 352 | } |
BETZtechnik | 0:09419d572e90 | 353 | |
BETZtechnik | 0:09419d572e90 | 354 | |
BETZtechnik | 0:09419d572e90 | 355 | if (n1Pos != lastN1Pos){ |
BETZtechnik | 1:e8452b75301e | 356 | tft.setCursor(40, 4); |
BETZtechnik | 0:09419d572e90 | 357 | tft.setTextColor(BLACK); |
BETZtechnik | 0:09419d572e90 | 358 | tft.setTextSize(2); |
BETZtechnik | 0:09419d572e90 | 359 | tft.printf("%d", lastN1Pos); |
BETZtechnik | 1:e8452b75301e | 360 | tft.setCursor(40,4); |
BETZtechnik | 1:e8452b75301e | 361 | tft.setTextColor(GREEN); |
BETZtechnik | 0:09419d572e90 | 362 | tft.setTextSize(2); |
BETZtechnik | 0:09419d572e90 | 363 | tft.printf("%d", n1Pos); |
BETZtechnik | 1:e8452b75301e | 364 | eeprom.write(currentToolNo, n1Pos + 45); // store new angle in eeprom, add 45 because its an unsigned value. |
BETZtechnik | 1:e8452b75301e | 365 | //wait(0.1); // adjusted from 1 |
BETZtechnik | 1:e8452b75301e | 366 | dir=1; |
BETZtechnik | 1:e8452b75301e | 367 | device.printf("N"); |
BETZtechnik | 1:e8452b75301e | 368 | 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 | 369 | //device.printf("N245"); // TEST!!! |
BETZtechnik | 1:e8452b75301e | 370 | tft.setCursor(100, 50); |
BETZtechnik | 1:e8452b75301e | 371 | tft.setTextSize(2); |
BETZtechnik | 1:e8452b75301e | 372 | tft.printf("%d", n1Pos + 145); |
BETZtechnik | 1:e8452b75301e | 373 | //wait(0.05); |
BETZtechnik | 1:e8452b75301e | 374 | dir=0; |
BETZtechnik | 0:09419d572e90 | 375 | lastN1Pos = n1Pos; |
BETZtechnik | 0:09419d572e90 | 376 | } |
BETZtechnik | 1:e8452b75301e | 377 | |
BETZtechnik | 1:e8452b75301e | 378 | if (numTools != lastNumTools){ |
BETZtechnik | 1:e8452b75301e | 379 | tft.setCursor(55, 95); |
BETZtechnik | 1:e8452b75301e | 380 | tft.setTextColor(BLACK); |
BETZtechnik | 1:e8452b75301e | 381 | tft.setTextSize(1); |
BETZtechnik | 1:e8452b75301e | 382 | tft.printf("%d", lastNumTools); |
BETZtechnik | 1:e8452b75301e | 383 | tft.setCursor(55,95); |
BETZtechnik | 1:e8452b75301e | 384 | tft.setTextColor(WHITE); |
BETZtechnik | 1:e8452b75301e | 385 | tft.setTextSize(1); |
BETZtechnik | 1:e8452b75301e | 386 | tft.printf("%d", numTools); |
BETZtechnik | 1:e8452b75301e | 387 | eeprom.write(numToolsAddress, numTools); // store new angle in eeprom, add 45 because its an unsigned value. |
BETZtechnik | 1:e8452b75301e | 388 | //wait(0.1); // adjusted from 1 |
BETZtechnik | 1:e8452b75301e | 389 | lastNumTools = numTools; |
BETZtechnik | 1:e8452b75301e | 390 | } |
BETZtechnik | 0:09419d572e90 | 391 | |
BETZtechnik | 1:e8452b75301e | 392 | if (numNoz != lastNumNoz){ |
BETZtechnik | 1:e8452b75301e | 393 | tft.setCursor(55, 110); |
BETZtechnik | 1:e8452b75301e | 394 | tft.setTextColor(BLACK); |
BETZtechnik | 1:e8452b75301e | 395 | tft.setTextSize(1); |
BETZtechnik | 1:e8452b75301e | 396 | tft.printf("%d", lastNumNoz); |
BETZtechnik | 1:e8452b75301e | 397 | tft.setCursor(55,110); |
BETZtechnik | 1:e8452b75301e | 398 | tft.setTextColor(WHITE); |
BETZtechnik | 1:e8452b75301e | 399 | tft.setTextSize(1); |
BETZtechnik | 1:e8452b75301e | 400 | tft.printf("%d", numNoz); |
BETZtechnik | 1:e8452b75301e | 401 | eeprom.write(numNozAddress, numNoz); // store new angle in eeprom, add 45 because its an unsigned value. |
BETZtechnik | 1:e8452b75301e | 402 | //wait(0.1); // adjusted from 1 |
BETZtechnik | 1:e8452b75301e | 403 | |
BETZtechnik | 1:e8452b75301e | 404 | if (numNoz == 2){ |
BETZtechnik | 1:e8452b75301e | 405 | tft.setCursor(80, 4); |
BETZtechnik | 1:e8452b75301e | 406 | tft.setTextColor(WHITE); |
BETZtechnik | 1:e8452b75301e | 407 | tft.setTextSize(2); |
BETZtechnik | 1:e8452b75301e | 408 | tft.printf("N2"); |
BETZtechnik | 1:e8452b75301e | 409 | tft.drawRect(78,2,74,18,WHITE); |
BETZtechnik | 1:e8452b75301e | 410 | } |
BETZtechnik | 1:e8452b75301e | 411 | if (numNoz == 1){ |
BETZtechnik | 1:e8452b75301e | 412 | tft.setCursor(80, 4); |
BETZtechnik | 1:e8452b75301e | 413 | tft.setTextColor(BLACK); |
BETZtechnik | 1:e8452b75301e | 414 | tft.setTextSize(2); |
BETZtechnik | 1:e8452b75301e | 415 | tft.printf("N2"); |
BETZtechnik | 1:e8452b75301e | 416 | tft.drawRect(78,2,74,18,BLACK); |
BETZtechnik | 1:e8452b75301e | 417 | } |
BETZtechnik | 1:e8452b75301e | 418 | lastNumNoz = numNoz; |
BETZtechnik | 1:e8452b75301e | 419 | } |
BETZtechnik | 0:09419d572e90 | 420 | |
BETZtechnik | 0:09419d572e90 | 421 | |
BETZtechnik | 0:09419d572e90 | 422 | |
BETZtechnik | 1:e8452b75301e | 423 | |
BETZtechnik | 1:e8452b75301e | 424 | if (count != lastCount){ |
BETZtechnik | 1:e8452b75301e | 425 | tft.setCursor(150, 100); |
BETZtechnik | 1:e8452b75301e | 426 | tft.setTextColor(BLACK); |
BETZtechnik | 1:e8452b75301e | 427 | tft.setTextSize(1); |
BETZtechnik | 1:e8452b75301e | 428 | tft.printf("%d", lastCount); |
BETZtechnik | 1:e8452b75301e | 429 | tft.setCursor(150,100); |
BETZtechnik | 1:e8452b75301e | 430 | tft.setTextColor(RED); |
BETZtechnik | 1:e8452b75301e | 431 | tft.setTextSize(1); |
BETZtechnik | 1:e8452b75301e | 432 | tft.printf("%d", count); |
BETZtechnik | 1:e8452b75301e | 433 | lastCount = count; |
BETZtechnik | 1:e8452b75301e | 434 | } |
BETZtechnik | 1:e8452b75301e | 435 | |
BETZtechnik | 1:e8452b75301e | 436 | //**************************** RS485 link *************************************** |
BETZtechnik | 1:e8452b75301e | 437 | |
BETZtechnik | 1:e8452b75301e | 438 | //dir =0; // receiver enable |
BETZtechnik | 1:e8452b75301e | 439 | |
BETZtechnik | 1:e8452b75301e | 440 | if (device.readable()) |
BETZtechnik | 1:e8452b75301e | 441 | { |
BETZtechnik | 1:e8452b75301e | 442 | c = device.getc(); |
BETZtechnik | 1:e8452b75301e | 443 | if(c=='B'){ |
BETZtechnik | 1:e8452b75301e | 444 | received = 1; |
BETZtechnik | 1:e8452b75301e | 445 | } |
BETZtechnik | 1:e8452b75301e | 446 | } |
BETZtechnik | 1:e8452b75301e | 447 | |
BETZtechnik | 1:e8452b75301e | 448 | if (received == 1){ |
BETZtechnik | 1:e8452b75301e | 449 | tft.setCursor(150, 80); |
BETZtechnik | 1:e8452b75301e | 450 | tft.setTextColor(WHITE); |
BETZtechnik | 1:e8452b75301e | 451 | tft.setTextSize(1); |
BETZtechnik | 1:e8452b75301e | 452 | tft.printf("1"); |
BETZtechnik | 1:e8452b75301e | 453 | } |
BETZtechnik | 1:e8452b75301e | 454 | |
BETZtechnik | 1:e8452b75301e | 455 | |
BETZtechnik | 1:e8452b75301e | 456 | } |
BETZtechnik | 1:e8452b75301e | 457 | } |