Remote inc coolant nozzle control program

Dependencies:   mbed reScale USBDevice

Dependents:   Nozzle_inputs Nozzle_display

Committer:
BETZtechnik
Date:
Mon Feb 11 00:47:47 2019 +0000
Revision:
5:18c6ff1370d0
Parent:
4:fa0af3a8e089
Child:
8:6bb07a893f53
working!!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
BETZtechnik 0:09419d572e90 1 #include "mbed.h"
BETZtechnik 2:79c03ac27b72 2
BETZtechnik 0:09419d572e90 3 #include "reScale.h"
BETZtechnik 2:79c03ac27b72 4
BETZtechnik 2:79c03ac27b72 5
BETZtechnik 2:79c03ac27b72 6 //Serial pc(USBTX, USBRX);
BETZtechnik 0:09419d572e90 7
BETZtechnik 5:18c6ff1370d0 8 //InterruptIn aux1(P0_7, PullUp); // index pulse
BETZtechnik 0:09419d572e90 9
BETZtechnik 5:18c6ff1370d0 10 DigitalIn aux1(P0_7);
BETZtechnik 5:18c6ff1370d0 11 DigitalIn cw(P1_24);
BETZtechnik 5:18c6ff1370d0 12 DigitalIn ccw(P2_7);
BETZtechnik 5:18c6ff1370d0 13
BETZtechnik 5:18c6ff1370d0 14 int cwRequested = 0;
BETZtechnik 5:18c6ff1370d0 15 int ccwRequested = 0;
BETZtechnik 5:18c6ff1370d0 16
BETZtechnik 5:18c6ff1370d0 17 int aux1State = 0;
BETZtechnik 5:18c6ff1370d0 18
BETZtechnik 5:18c6ff1370d0 19
BETZtechnik 5:18c6ff1370d0 20 DigitalOut dir(P0_15);
BETZtechnik 5:18c6ff1370d0 21
BETZtechnik 5:18c6ff1370d0 22 Serial device(P0_14, P0_13, 19200); // RS 485 TX RX?
BETZtechnik 2:79c03ac27b72 23
BETZtechnik 2:79c03ac27b72 24 reScale servo1Scale(45,0,750,1800); //19850 is 1.0v from voltage divider at 10k.
BETZtechnik 0:09419d572e90 25
BETZtechnik 5:18c6ff1370d0 26 PwmOut servo1(P1_13); //display board
BETZtechnik 0:09419d572e90 27
BETZtechnik 2:79c03ac27b72 28 //char tens = '0';
BETZtechnik 2:79c03ac27b72 29 //char ones = '1';
BETZtechnik 0:09419d572e90 30
BETZtechnik 2:79c03ac27b72 31 int Tens = 0;
BETZtechnik 2:79c03ac27b72 32 int Ones = 0;
BETZtechnik 2:79c03ac27b72 33
BETZtechnik 2:79c03ac27b72 34 int currentNozzle = 0;
BETZtechnik 0:09419d572e90 35
BETZtechnik 2:79c03ac27b72 36 int index = 0; // for parsing serial
BETZtechnik 0:09419d572e90 37
BETZtechnik 2:79c03ac27b72 38 int n1Pos = 0;
BETZtechnik 0:09419d572e90 39
BETZtechnik 2:79c03ac27b72 40 int servo1Pos = 0;
BETZtechnik 0:09419d572e90 41
BETZtechnik 5:18c6ff1370d0 42
BETZtechnik 2:79c03ac27b72 43 DigitalOut servo2(P2_2);
BETZtechnik 0:09419d572e90 44
BETZtechnik 0:09419d572e90 45
BETZtechnik 5:18c6ff1370d0 46 void triggered()
BETZtechnik 5:18c6ff1370d0 47 {
BETZtechnik 5:18c6ff1370d0 48 servo2 = 1;
BETZtechnik 5:18c6ff1370d0 49
BETZtechnik 5:18c6ff1370d0 50 if (cw == 0){
BETZtechnik 5:18c6ff1370d0 51 cwRequested = 1;
BETZtechnik 5:18c6ff1370d0 52 }
BETZtechnik 5:18c6ff1370d0 53
BETZtechnik 5:18c6ff1370d0 54 else if (ccw == 0){
BETZtechnik 5:18c6ff1370d0 55 ccwRequested = 1;
BETZtechnik 5:18c6ff1370d0 56 }
BETZtechnik 5:18c6ff1370d0 57
BETZtechnik 5:18c6ff1370d0 58 }
BETZtechnik 5:18c6ff1370d0 59
BETZtechnik 5:18c6ff1370d0 60
BETZtechnik 5:18c6ff1370d0 61
BETZtechnik 5:18c6ff1370d0 62
BETZtechnik 5:18c6ff1370d0 63
BETZtechnik 0:09419d572e90 64 int main() {
BETZtechnik 4:fa0af3a8e089 65
BETZtechnik 5:18c6ff1370d0 66 cw.mode(PullUp);
BETZtechnik 5:18c6ff1370d0 67 ccw.mode(PullUp);
BETZtechnik 5:18c6ff1370d0 68 aux1.mode(PullUp);
BETZtechnik 2:79c03ac27b72 69
BETZtechnik 0:09419d572e90 70
BETZtechnik 5:18c6ff1370d0 71 //aux1.rise(&triggered);
BETZtechnik 5:18c6ff1370d0 72
BETZtechnik 5:18c6ff1370d0 73
BETZtechnik 5:18c6ff1370d0 74
BETZtechnik 5:18c6ff1370d0 75 servo2 = 0;
BETZtechnik 2:79c03ac27b72 76
BETZtechnik 2:79c03ac27b72 77
BETZtechnik 2:79c03ac27b72 78
BETZtechnik 2:79c03ac27b72 79 uint8_t c = 0; // for 485 link
BETZtechnik 0:09419d572e90 80
BETZtechnik 2:79c03ac27b72 81 while(1) {
BETZtechnik 4:fa0af3a8e089 82
BETZtechnik 5:18c6ff1370d0 83 //************************************ Interrupt response **********************
BETZtechnik 5:18c6ff1370d0 84
BETZtechnik 5:18c6ff1370d0 85
BETZtechnik 5:18c6ff1370d0 86 if (aux1 == 1 && aux1State == 0)
BETZtechnik 5:18c6ff1370d0 87 {
BETZtechnik 5:18c6ff1370d0 88
BETZtechnik 5:18c6ff1370d0 89 if (cw == 0)
BETZtechnik 5:18c6ff1370d0 90 {
BETZtechnik 5:18c6ff1370d0 91 //servo2 = 1;
BETZtechnik 5:18c6ff1370d0 92 dir= 1;
BETZtechnik 5:18c6ff1370d0 93 //wait(0.001);
BETZtechnik 5:18c6ff1370d0 94 device.printf("M");
BETZtechnik 5:18c6ff1370d0 95 wait(0.05);
BETZtechnik 5:18c6ff1370d0 96 device.printf("+");
BETZtechnik 5:18c6ff1370d0 97 wait(0.001);
BETZtechnik 5:18c6ff1370d0 98 dir=0;
BETZtechnik 5:18c6ff1370d0 99 aux1State = 1;
BETZtechnik 5:18c6ff1370d0 100 //wait(.001);
BETZtechnik 5:18c6ff1370d0 101 }
BETZtechnik 5:18c6ff1370d0 102
BETZtechnik 5:18c6ff1370d0 103 if (ccw == 0)
BETZtechnik 5:18c6ff1370d0 104 {
BETZtechnik 5:18c6ff1370d0 105 dir= 1;
BETZtechnik 5:18c6ff1370d0 106 //wait(0.01);
BETZtechnik 5:18c6ff1370d0 107 device.printf("M");
BETZtechnik 5:18c6ff1370d0 108 wait(0.05);
BETZtechnik 5:18c6ff1370d0 109 device.printf("-");
BETZtechnik 5:18c6ff1370d0 110 wait(0.001);
BETZtechnik 5:18c6ff1370d0 111 dir=0;
BETZtechnik 5:18c6ff1370d0 112 aux1State = 1;
BETZtechnik 5:18c6ff1370d0 113 //wait(.001);
BETZtechnik 5:18c6ff1370d0 114 }
BETZtechnik 5:18c6ff1370d0 115 }
BETZtechnik 5:18c6ff1370d0 116
BETZtechnik 5:18c6ff1370d0 117 if (aux1 == 0 && aux1State == 1)
BETZtechnik 5:18c6ff1370d0 118 {
BETZtechnik 5:18c6ff1370d0 119 aux1State = 0;
BETZtechnik 5:18c6ff1370d0 120 //wait(0.1);
BETZtechnik 5:18c6ff1370d0 121 }
BETZtechnik 4:fa0af3a8e089 122
BETZtechnik 5:18c6ff1370d0 123 /*
BETZtechnik 5:18c6ff1370d0 124 if (cwRequested == 1)
BETZtechnik 5:18c6ff1370d0 125 {
BETZtechnik 5:18c6ff1370d0 126 dir= 1;
BETZtechnik 5:18c6ff1370d0 127 //wait(0.001);
BETZtechnik 5:18c6ff1370d0 128 device.printf("M");
BETZtechnik 5:18c6ff1370d0 129 wait(0.01);
BETZtechnik 5:18c6ff1370d0 130 device.printf("+");
BETZtechnik 5:18c6ff1370d0 131 wait(0.001);
BETZtechnik 5:18c6ff1370d0 132 dir=0;
BETZtechnik 5:18c6ff1370d0 133 cwRequested = 0;
BETZtechnik 5:18c6ff1370d0 134 //wait(.001);
BETZtechnik 5:18c6ff1370d0 135 }
BETZtechnik 5:18c6ff1370d0 136
BETZtechnik 5:18c6ff1370d0 137
BETZtechnik 5:18c6ff1370d0 138 else if (ccwRequested == 1)
BETZtechnik 5:18c6ff1370d0 139 {
BETZtechnik 5:18c6ff1370d0 140 dir= 1;
BETZtechnik 5:18c6ff1370d0 141 //wait(0.01);
BETZtechnik 5:18c6ff1370d0 142 device.printf("M");
BETZtechnik 5:18c6ff1370d0 143 wait(0.01);
BETZtechnik 5:18c6ff1370d0 144 device.printf("-");
BETZtechnik 5:18c6ff1370d0 145 wait(0.001);
BETZtechnik 5:18c6ff1370d0 146 dir=0;
BETZtechnik 5:18c6ff1370d0 147 ccwRequested = 0;
BETZtechnik 5:18c6ff1370d0 148 //wait(.001);
BETZtechnik 5:18c6ff1370d0 149 }
BETZtechnik 5:18c6ff1370d0 150 */
BETZtechnik 5:18c6ff1370d0 151
BETZtechnik 5:18c6ff1370d0 152
BETZtechnik 5:18c6ff1370d0 153 //********************************** Serial listening ***************************
BETZtechnik 2:79c03ac27b72 154
BETZtechnik 2:79c03ac27b72 155 while (device.readable())
BETZtechnik 5:18c6ff1370d0 156 {
BETZtechnik 5:18c6ff1370d0 157
BETZtechnik 0:09419d572e90 158
BETZtechnik 2:79c03ac27b72 159
BETZtechnik 2:79c03ac27b72 160 c = device.getc();
BETZtechnik 2:79c03ac27b72 161
BETZtechnik 2:79c03ac27b72 162 if (c == 'N'){
BETZtechnik 2:79c03ac27b72 163
BETZtechnik 2:79c03ac27b72 164 index = 1;
BETZtechnik 2:79c03ac27b72 165
BETZtechnik 2:79c03ac27b72 166 }
BETZtechnik 2:79c03ac27b72 167
BETZtechnik 2:79c03ac27b72 168 if (index == 1){
BETZtechnik 2:79c03ac27b72 169 c = device.getc();
BETZtechnik 2:79c03ac27b72 170 if (c == '1'){ // N1
BETZtechnik 2:79c03ac27b72 171 currentNozzle = 1;
BETZtechnik 2:79c03ac27b72 172 index = 3;
BETZtechnik 2:79c03ac27b72 173
BETZtechnik 2:79c03ac27b72 174
BETZtechnik 2:79c03ac27b72 175 }
BETZtechnik 2:79c03ac27b72 176 else if (c == '2'){ //N2
BETZtechnik 2:79c03ac27b72 177 currentNozzle = 2;
BETZtechnik 2:79c03ac27b72 178 index = 3;
BETZtechnik 2:79c03ac27b72 179
BETZtechnik 2:79c03ac27b72 180 }
BETZtechnik 2:79c03ac27b72 181
BETZtechnik 2:79c03ac27b72 182 }
BETZtechnik 2:79c03ac27b72 183
BETZtechnik 0:09419d572e90 184
BETZtechnik 2:79c03ac27b72 185
BETZtechnik 2:79c03ac27b72 186 if (index == 3){
BETZtechnik 2:79c03ac27b72 187
BETZtechnik 2:79c03ac27b72 188 c = device.getc();
BETZtechnik 2:79c03ac27b72 189
BETZtechnik 2:79c03ac27b72 190 if (c=='0'){
BETZtechnik 2:79c03ac27b72 191 Tens = 0;
BETZtechnik 2:79c03ac27b72 192 index = 4;
BETZtechnik 2:79c03ac27b72 193
BETZtechnik 2:79c03ac27b72 194 }
BETZtechnik 2:79c03ac27b72 195
BETZtechnik 2:79c03ac27b72 196 else if (c=='1'){
BETZtechnik 2:79c03ac27b72 197 Tens = 1;
BETZtechnik 2:79c03ac27b72 198 index = 4;
BETZtechnik 2:79c03ac27b72 199
BETZtechnik 2:79c03ac27b72 200 }
BETZtechnik 2:79c03ac27b72 201
BETZtechnik 2:79c03ac27b72 202 else if (c=='2'){
BETZtechnik 2:79c03ac27b72 203 Tens = 2;
BETZtechnik 2:79c03ac27b72 204 index = 4;
BETZtechnik 2:79c03ac27b72 205
BETZtechnik 2:79c03ac27b72 206 }
BETZtechnik 2:79c03ac27b72 207
BETZtechnik 2:79c03ac27b72 208 else if (c=='3'){
BETZtechnik 2:79c03ac27b72 209 Tens = 3;
BETZtechnik 2:79c03ac27b72 210 index = 4;
BETZtechnik 2:79c03ac27b72 211
BETZtechnik 2:79c03ac27b72 212 }
BETZtechnik 2:79c03ac27b72 213
BETZtechnik 2:79c03ac27b72 214 else if (c=='4'){
BETZtechnik 2:79c03ac27b72 215 Tens = 4;
BETZtechnik 2:79c03ac27b72 216 index = 4;
BETZtechnik 2:79c03ac27b72 217 }
BETZtechnik 2:79c03ac27b72 218
BETZtechnik 2:79c03ac27b72 219
BETZtechnik 2:79c03ac27b72 220 }
BETZtechnik 2:79c03ac27b72 221
BETZtechnik 2:79c03ac27b72 222 if (index == 4){
BETZtechnik 2:79c03ac27b72 223
BETZtechnik 2:79c03ac27b72 224 c = device.getc();
BETZtechnik 2:79c03ac27b72 225
BETZtechnik 2:79c03ac27b72 226 if (c=='0'){
BETZtechnik 2:79c03ac27b72 227 Ones = 0;
BETZtechnik 2:79c03ac27b72 228
BETZtechnik 2:79c03ac27b72 229 }
BETZtechnik 2:79c03ac27b72 230
BETZtechnik 2:79c03ac27b72 231 else if (c=='1'){
BETZtechnik 2:79c03ac27b72 232 Ones = 1;
BETZtechnik 2:79c03ac27b72 233
BETZtechnik 2:79c03ac27b72 234
BETZtechnik 2:79c03ac27b72 235 }
BETZtechnik 2:79c03ac27b72 236
BETZtechnik 2:79c03ac27b72 237 else if (c=='2'){
BETZtechnik 2:79c03ac27b72 238 Ones = 2;
BETZtechnik 2:79c03ac27b72 239
BETZtechnik 2:79c03ac27b72 240 }
BETZtechnik 2:79c03ac27b72 241
BETZtechnik 2:79c03ac27b72 242 else if (c=='3'){
BETZtechnik 2:79c03ac27b72 243 Ones = 3;
BETZtechnik 2:79c03ac27b72 244
BETZtechnik 2:79c03ac27b72 245 }
BETZtechnik 2:79c03ac27b72 246
BETZtechnik 2:79c03ac27b72 247 else if (c=='4'){
BETZtechnik 2:79c03ac27b72 248 Ones = 4;
BETZtechnik 2:79c03ac27b72 249 }
BETZtechnik 2:79c03ac27b72 250
BETZtechnik 2:79c03ac27b72 251 else if (c=='5'){
BETZtechnik 2:79c03ac27b72 252 Ones = 5;
BETZtechnik 2:79c03ac27b72 253 }
BETZtechnik 2:79c03ac27b72 254
BETZtechnik 2:79c03ac27b72 255 else if (c=='6'){
BETZtechnik 2:79c03ac27b72 256 Ones = 6;
BETZtechnik 2:79c03ac27b72 257 }
BETZtechnik 2:79c03ac27b72 258
BETZtechnik 2:79c03ac27b72 259 else if (c=='7'){
BETZtechnik 2:79c03ac27b72 260 Ones = 7;
BETZtechnik 2:79c03ac27b72 261 }
BETZtechnik 2:79c03ac27b72 262
BETZtechnik 2:79c03ac27b72 263 else if (c=='8'){
BETZtechnik 2:79c03ac27b72 264 Ones = 8;
BETZtechnik 2:79c03ac27b72 265 }
BETZtechnik 2:79c03ac27b72 266
BETZtechnik 2:79c03ac27b72 267 else if (c=='9'){
BETZtechnik 2:79c03ac27b72 268 Ones = 9;
BETZtechnik 2:79c03ac27b72 269 }
BETZtechnik 2:79c03ac27b72 270
BETZtechnik 2:79c03ac27b72 271 else if (c=='0'){
BETZtechnik 2:79c03ac27b72 272 Ones = 0;
BETZtechnik 2:79c03ac27b72 273 }
BETZtechnik 2:79c03ac27b72 274
BETZtechnik 2:79c03ac27b72 275
BETZtechnik 2:79c03ac27b72 276
BETZtechnik 5:18c6ff1370d0 277 n1Pos = ((Tens * 10) + Ones);
BETZtechnik 2:79c03ac27b72 278
BETZtechnik 5:18c6ff1370d0 279 if ((n1Pos == 45) && (currentNozzle==1)){
BETZtechnik 5:18c6ff1370d0 280 // servo2=1;
BETZtechnik 5:18c6ff1370d0 281 }
BETZtechnik 2:79c03ac27b72 282
BETZtechnik 5:18c6ff1370d0 283 servo1Pos = servo1Scale.from(n1Pos);
BETZtechnik 0:09419d572e90 284
BETZtechnik 5:18c6ff1370d0 285 servo1.pulsewidth_us(servo1Pos);
BETZtechnik 2:79c03ac27b72 286
BETZtechnik 5:18c6ff1370d0 287 index=0;
BETZtechnik 2:79c03ac27b72 288
BETZtechnik 2:79c03ac27b72 289
BETZtechnik 2:79c03ac27b72 290 }
BETZtechnik 0:09419d572e90 291 }
BETZtechnik 0:09419d572e90 292
BETZtechnik 0:09419d572e90 293
BETZtechnik 5:18c6ff1370d0 294
BETZtechnik 0:09419d572e90 295
BETZtechnik 2:79c03ac27b72 296
BETZtechnik 2:79c03ac27b72 297 }
BETZtechnik 2:79c03ac27b72 298 }