/*
Forum: Private Message
Wokwi: https://wokwi.com/projects/437465926259305473
Originalsketch
*/
// Eingang Pins setzen
const int pushButton_green = 2;
const int pushButton_red = 3;
// Ausgang Pins setzen
const int ledPin_green = 7;
const int ledPin_red = 4;
const int ledPin_blue = 5;
const int ledPin_orange = 6;
const int nclaueftpin = 8;
const int ncstehtpin = 9;
// Init Variablen
int buttonState_green = LOW;
int buttonState_red = HIGH;
// Case Nummern setzen
enum {NC_Wartend, NC_Start, NC_Stopp, NC_Laeuft, NC_Beladen, NC_Entladen} NcStatus = NC_Wartend;
// Unterprogramme
void Warten() {
buttonState_green = digitalRead(pushButton_green);
buttonState_red = digitalRead(pushButton_red);
if (buttonState_red == HIGH) {
NcStatus = NC_Stopp;
}
if (buttonState_green == HIGH) {
NcStatus = NC_Start;
}
}
void NcStart() {
int i = 0;
digitalWrite(ledPin_red, LOW);
digitalWrite(ledPin_green, HIGH);
Serial.println("NC Start - Rot aus - Grün an");
while (i < 2000) {
delay(1);
buttonState_red = digitalRead(pushButton_red);
if (buttonState_red == HIGH) {
NcStatus = NC_Stopp;
break;
}
i = i + 1;
}
NcStatus = NC_Beladen;
}
void NcStopp() {
int i = 0;
digitalWrite(ledPin_orange, LOW);
digitalWrite(ledPin_blue, LOW);
digitalWrite(ledPin_green, LOW);
digitalWrite(nclaueftpin, LOW);
digitalWrite(ledPin_red, HIGH);
digitalWrite(ncstehtpin, HIGH);
Serial.println("NC Stopp - orange aus, blau aus, grün aus, rot an");
while (i < 100) {
delay(1);
buttonState_red = digitalRead(pushButton_red);
if (buttonState_red == HIGH) {
NcStatus = NC_Stopp;
break;
}
i = i + 1;
}
NcStatus = NC_Wartend;
}
void NcBeladen() {
int i = 0;
digitalWrite(ledPin_blue, HIGH);
Serial.println("NC Beladen - Blau an");
while (i < 8000) {
delay(1);
buttonState_red = digitalRead(pushButton_red);
if (buttonState_red == HIGH) {
NcStatus = NC_Stopp;
break;
}
i = i + 1;
}
NcStatus = NC_Laeuft;
}
void NcLaeuft() {
int i = 0;
digitalWrite(ledPin_blue, LOW);
digitalWrite(nclaueftpin, HIGH);
Serial.println("NC Läuft - blau aus, grün an, NC pin Läuft an ");
while (i < 15000) {
delay(1);
buttonState_red = digitalRead(pushButton_red);
if (buttonState_red == HIGH) {
NcStatus = NC_Stopp;
break;
}
i = i + 1;
}
NcStatus = NC_Entladen;
}
void NcEntladen() {
int i = 0;
digitalWrite(nclaueftpin, LOW);
digitalWrite(ledPin_orange, HIGH);
Serial.println("NC Entladen - Orange an, nc läuft pin an ");
while (i < 8000) {
delay(1);
buttonState_red = digitalRead(pushButton_red);
if (buttonState_red == HIGH) {
NcStatus = NC_Stopp;
break;
}
i = i + 1;
}
NcStatus = NC_Stopp;
}
// Setup
void setup() {
Serial.begin(9600);
// Pin Modus zuweisung Inputs
pinMode(pushButton_green, INPUT);
pinMode(pushButton_red, INPUT);
// Pin Modus zuweisung Outputs
pinMode(ledPin_green, OUTPUT);
pinMode(ledPin_red, OUTPUT);
pinMode(ledPin_blue, OUTPUT);
pinMode(ledPin_orange, OUTPUT);
pinMode(nclaueftpin, OUTPUT);
pinMode(ncstehtpin, OUTPUT);
digitalWrite(ledPin_red, HIGH);
}
// Hauptprogramm
void loop()
{
buttonState_red = digitalRead(pushButton_red);
if (buttonState_red == HIGH) {
NcStatus = NC_Stopp;
}
switch (NcStatus)
{
case NC_Wartend:
Warten();
break;
case NC_Start:
NcStart();
break;
case NC_Stopp:
NcStopp();
break;
case NC_Laeuft:
NcLaeuft();
break;
case NC_Beladen:
NcBeladen();
break;
case NC_Entladen:
NcEntladen();
break;
}
}