/*Globale Variablen*/ /*Eingänge*/ boolean valTeam1; boolean valTeam2; /*Timerbaustein*/ int zaehler; int sekunde; int minute; /*Spielführung*/ int stepspiel; /*Globale Variablen*/ void setup(){ /*Pins und serielle Schnittstelle definieren*/ Serial.begin(9600); pinMode(4,INPUT); pinMode(7,INPUT); pinMode(8,OUTPUT); //Start pinMode(12,OUTPUT); //Buzzer /*Standard null setzen aller Variablen zum Start*/ //Eingangswerte valTeam1=false; valTeam2=false; //Timervariablen zaehler=0; sekunde=0; minute=0; //Spielschritte stepspiel=0; } void loop(){ //Taskzeit auf 100ms setzen (wichtig für Zeitbaustein) digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,HIGH); digitalWrite(12,HIGH); delay(100); Serial.println("loop"); //Einstieg in Spielablauf switch (stepspiel){ /*Wartestellung auf Eingänge*/ case 0: Serial.println("case 0"); einlesen(); if(valTeam1==true&&valTeam2==true){stepspiel=1;digitalWrite(8,HIGH);} break; /*10-Sekundencounter läuft anschließend Ausgang=0. Spielbeginn!*/ case 1: Serial.println("case 1"); timerbaustein(); if(sekunde==14){digitalWrite(8,LOW);stepspiel=10;valTeam1=false;valTeam2=false;} break; //Spiel läuft entweder 6 Minuten oder Buzzer wird getätigt case 10: Serial.println("case 10"); einlesen(); timerbaustein(); if(valTeam1==true||valTeam2==true){endruecksetzen();} if(minute==6){endruecksetzen();} break; } } void endruecksetzen(){ Serial.println("Buzzer"); digitalWrite(8,LOW); digitalWrite(12,HIGH); delay(4000); digitalWrite(12,LOW); Serial.println("Buzzer Ende"); valTeam1=false; valTeam2=false; zaehler=0; sekunde=0; minute=0; stepspiel=0; Serial.println("ENDE,nächste Runde"); return; } void einlesen(){ Serial.println("lesen"); //lokale Eingangszwischenspeicher boolean Team1=false; boolean Team2=false; //Auslesen der Eingänge Team1=digitalRead(6); Team2=digitalRead(7); //Abfrage in Warteposition und nach Start. Bei positivem Ergebnis -> Zwischenspeichern if (Team1==true){valTeam1=true;} if (Team2==true){valTeam2=true;} //Debugg ob gelesen wurde Serial.println("t1"); Serial.println(valTeam1); Serial.println("t2"); Serial.println(valTeam2); return; } void timerbaustein(){ Serial.println("timer"); //Jede Task wird zaehler um einen erhöht zaehler=zaehler+1; //10 zaehler ergeben eine sekunde (10*100ms = 1000ms = 1s) if (zaehler==10){sekunde=sekunde+1;zaehler=0;} //60 Sekunden ergeben eine Minute (60s = 1min) if (sekunde==60){minute=minute+1;sekunde=0;} //Ausgabe für Debugging Serial.println(zaehler); Serial.println(sekunde); Serial.println(minute); return; }