/*Steuerung Teslamontageüberwachung, Testprogramm für Wokwi-Simulator
soll auf Arduino_Micro geladen werden, dazu entsprechend Programm für USB-Ausgabe anstatt an PC (QS1) anpassen.
Debugfunktion:
Eingang 8 gegen GND legen und div. Status wird im geöffneten Windows-Editor ausgegeben.
Resetfunktion:
Tastereingang (11) gegen GND mindestens 5 Sekunden legen und auf Einlegeposition drehen, Taster loslassen,
nach ca. 5 Sekunden kann der Montagezyklus neu begonnen werden
// Eingänge
#define GesamtIOKamera 10
#define LTStopfen 9
//#define KameraBusy 16;wird nicht gebraucht
#define Taster 11
#define debug 8
//Ausgänge
#define trigger_ext 7
#define bit0 6
#define bit1 5
int Stufe = 0;
int UeberwachungAn = 0; // kann 0 oder 8 sein!
int keinReset = 0;
//int a = 2;
String ts0 = "Lage_Dummyprüfung_erreicht, Stopfen montiert";
String ts1 = "Gewindeniet vorhanden";
String ts2 = "Dummy_eingesetzt und ausgelöst";
String ts3= "Kappe eingesetzt";
String ts4 = "frei";
void setup() {
//Eingänge
pinMode(10, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
//pinMode(12, INPUT_PULLUP);//wird nicht gebraucht
pinMode(11, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
//Ausgänge
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
int x = digitalRead(9);
int y = digitalRead(10);
int z = digitalRead(11);
int StatusStopfen = !x * 2;
int Gesamtstatuscam = !y * 4;
int Statustaster = !z * 1;
int codeStufe = Stufe * 16;
int code = Statustaster + StatusStopfen + Gesamtstatuscam +UeberwachungAn + codeStufe;
delay(2000);
Serial.begin(9600);
}
void loop() {
int var = 6;
//delay(2000);
// put your main code here, to run repeatedly:
// lese Eingänge und rechne code "eingangsbelegung" fest:
/*
int StatusStopfen = digitalRead(9) * 2;
int Gesamtstatuscam = digitalRead(10) * 4;
int Statustaster = digitalRead(11) * 1;
*/
int x = digitalRead(9);
int y = digitalRead(10);
int z = digitalRead(11);
int StatusStopfen = !x * 2;
int Gesamtstatuscam = !y * 4;
int Statustaster = !z * 1;
int codeStufe = Stufe * 16;
int code = Statustaster + StatusStopfen + Gesamtstatuscam +UeberwachungAn + codeStufe;
//Serial.println(code);
//int Statusbusy = digitalRead(KameraBusy); wird nicht gebraucht
/*
wenn Eingang debug ( Pin 14 ) gegen GND gelegt wird und im PC der Texteditor geöffnet wird,
ist infolge der angezeigten Zahl der Status der Eingänge sichtbar
*/
int Statusdebug = digitalRead(8);
switch(code) {
case 0:
Stufe = 1;
break;
case 17:
Serial.println("Enter an QS1 senden " );
Stufe = 2;
break;
case 32:
Stufe = 3;
break;
case 49:
Serial.println("kein Stopfen erkannt" );
break;
case 51:
Serial.println(ts0);
Stufe = 4;
UeberwachungAn = 8;
break;
case 74:
digitalWrite(trigger_ext, HIGH);
digitalWrite(bit0, LOW);
digitalWrite(bit1, LOW);
Stufe = 5;
break;
case 94:
Serial.println(ts1);
digitalWrite(bit0, HIGH);
digitalWrite(bit1, LOW);
Stufe = 6;
break;
case 106:
Stufe = 7;
break;
case 126:
Serial.println(ts2);
digitalWrite(bit0, LOW);
digitalWrite(bit1, HIGH);
Stufe = 8;
break;
case 138:
Stufe = 9;
break;
case 158:
Serial.println(ts3);
digitalWrite(trigger_ext, LOW);
digitalWrite(bit0, LOW);
digitalWrite(bit1, LOW);
Stufe = 10;
break;
case 170:
UeberwachungAn = 0;
Stufe = 11;
break;
case 178:
Stufe = 12;
break;
case 192:
Stufe = 13;
break;
case 208:
Stufe = 0;
break;
}
if(Statusdebug == LOW)
{
/*
Serial.print(" StatusStopfen = ");
Serial.println(StatusStopfen);
Serial.print("Gesamtstatuscam = ");
Serial.println(Gesamtstatuscam);
Serial.print("Statustaster = ");
Serial.println(Statustaster);
*/
Serial.print("code = ");
Serial.println(code);
Serial.print("Stufe = ");
Serial.println(Stufe);
Serial.print("UeberwachungAn = ");
Serial.println(UeberwachungAn);
Serial.print(" ");
Serial.println(" ");
}
// ab hier "Resetfunktion"
int keinReset = digitalRead(11);
if(keinReset == LOW)
{
var = 0;
}
while(var < 5 )
{
Serial.print("var :");
Serial.println(var);
var = var + 1;
delay(1000);
int keinReset = digitalRead(11);
if(keinReset == HIGH)
{
var = 6;
}
}
Serial.print("Ist_var :");
Serial.println(var);
if(var == 5)
{
Serial.println("Resetfunktion aktiviert ");
digitalWrite(trigger_ext, LOW);
digitalWrite(bit0, LOW);
digitalWrite(bit1, LOW);
Stufe = 0;
UeberwachungAn = 0;
//delay(2000);
}
delay(2000);
}