// ---------------------
// DIGITALE EINGÄNGE
// ---------------------
#define START 21 // Start S1
#define RESET 23 // Reset
#define S1_1S1 53 // Schieber 1 hinten
#define S1_1S2 51 // Schieber 1 vorne
#define S2_2S1 49 // Schieber 2 hinten
#define S2_2S2 47 // Schieber 2 vorne
#define S3_3S1 45 // Pusher 1 hinten
#define S3_3S2 43 // Pusher 1 vorne
#define S4_4S1 41 // Pusher 2 hinten
#define S4_4S2 39 // Pusher 2 vorne
#define L1 37 // Lichtschranke 1
#define B1 35 // Sensor 1
#define L2 33 // Lichtschranke 2
#define L3 31 // Lichtschranke 3
#define L4 29 // Lichtschranke 4
#define L5 27 // Lichtschranke 5
// ---------------------
// DIGITALE AUSGÄNGE
// ---------------------
#define Y1A A0 // Ventil Y1 ausfahren
#define Y1E A1 // Ventil Y1 einfahren
#define Y2A A2 // Ventil Y2 ausfahren
#define Y2E A3 // Ventil Y2 einfahren
#define Y3A A4 // Ventil Y3 ausfahren
#define Y3E A5 // Ventil Y3 einfahren
#define Y4A 14 // Ventil Y4 ausfahren
#define Y4E 15 // Ventil Y4 einfahren
#define Q1 16 // Motor EIN
int step = 0; // GLOBALE VARIABLEN
// SETUP
void setup() {
pinMode(START, INPUT);
pinMode(RESET, INPUT);
pinMode(S1_1S1, INPUT);
pinMode(S1_1S2, INPUT);
pinMode(S2_2S1, INPUT);
pinMode(S2_2S2, INPUT);
pinMode(S3_3S1, INPUT);
pinMode(S3_3S2, INPUT);
pinMode(S4_4S1, INPUT);
pinMode(S4_4S2, INPUT);
pinMode(L1, INPUT);
pinMode(B1, INPUT);
pinMode(L2, INPUT);
pinMode(L3, INPUT);
pinMode(L4, INPUT);
pinMode(L5, INPUT);
pinMode(Y1A, OUTPUT);
pinMode(Y1E, OUTPUT);
pinMode(Y2A, OUTPUT);
pinMode(Y2E, OUTPUT);
pinMode(Y3A, OUTPUT);
pinMode(Y3E, OUTPUT);
pinMode(Y4A, OUTPUT);
pinMode(Y4E, OUTPUT);
pinMode(Q1, OUTPUT);
}
void loop() {
if (digitalRead(RESET)) {
step = 0;
} // RESET
switch (step) {
case 0: // Grundstellung
if (!digitalRead(RESET))
step = 1;
break;
case 1: // Warten auf Teil an L1
if (digitalRead(L1))
step = 2;
break;
case 2: // Y4E
if (digitalRead(S1_1S1))
step = 3;
break;
case 3: // Y1A
if (digitalRead(S1_1S2))
step = 4;
break;
case 4: // Y2E
if (digitalRead(S2_2S1))
step = 5;
break;
case 5: // Y2A
if (digitalRead(S2_2S2))
step = 6;
break;
case 6: // Motor EIN
if (digitalRead(B1))
step = 70;
else if (digitalRead(L2))
step = 80;
break;
case 70: // Y3A
if (digitalRead(S3_3S2))
step = 71;
break;
case 71: // Y3E
if (digitalRead(S3_3S1))
step = 1;
break;
case 80: // Y4A
if (digitalRead(S4_4S2))
step = 81;
break;
case 81: // Y4E
if (digitalRead(S4_4S1))
step = 1;
break;
}
// AKTIONEN
digitalWrite(Y1A, step == 3);
digitalWrite(Y2A, step == 5);
digitalWrite(Y3A, step == 70);
digitalWrite(Y4A, step == 80);
digitalWrite(Y1E, step != 3);
digitalWrite(Y2E, step != 5);
digitalWrite(Y3E, step == 71);
digitalWrite(Y4E, step == 2 || step == 81);
digitalWrite(Q1, step == 6);
}