Wie kann ich meinen Code vereinfachen?

So ich bastele munter weiter...

Aber irgendwie reicht es noch nicht zum Durchbruch.

Das zeigt mein Monitor mit delay auf 3000 nach einem Reset:

StartinktktaStartikt´WÉÑ¥­ÑÑStarti11StStartinkSk2ºWÉÑ¥­M2tStartik1tk2StartinStktWÉÑ¥¹­Ñ­ÑMÑ?ÉÑ¥¹­Ñ­ÉºWÉÑ¥ÅSa2tStartikStktStartinSt11StartinkS

Aktueller Programmstand komplett:

#include <SPI.h>
#include <SD.h>
#include <Ethernet.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x65, 0x3A };
byte ip[] = { 192, 168, 1, 2 };
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };

EthernetServer server(80); //server port

String readString;

long Sperrzeit = 1200000; // 20min = 1 200 000
long Abschaltzeit = 1500000; // 25min = 1 500 000
long LetzteZeitSperr; // Sperrzeit bei Falscher Antwort
long LetzteZeitAus; // Zeit um Aus Automatisch

int Fragencounter = 0; // Zähler aktuelle Frage
int AusPin = 5; // Pin mit Relais Aus
int StatusAusPin = LOW; // Statusspeicher des Relais für AUS
int StatusFalscheFrage = LOW; // Frage Falsch = Sperrzeit abwarten

void setup(){

Serial.begin(9600);

pinMode(10,OUTPUT);
digitalWrite(10,HIGH);
Serial.print("Starting SD..");
if(!SD.begin(4)) Serial.println("Fehler");
else Serial.println("Ok");
delay(2000);

Ethernet.begin(mac, ip, gateway, subnet);
digitalWrite(10,HIGH);

server.begin();
Serial.println("Server Ready");
delay(2000);
}

EthernetClient client;

void loop(){
// ------------------------------------------------------------------------- Abschaltzeit
if (millis() - LetzteZeitAus > LetzteZeitAus) {
StatusAusPin = false; }
else {
StatusAusPin = true;
digitalWrite(AusPin, StatusAusPin);
}

// ------------------------------------------------------------------------- Sperrzeit falsche Frage
if (StatusFalscheFrage = HIGH) {
if (millis() - LetzteZeitSperr > Sperrzeit) {
StatusFalscheFrage = HIGH; }
else {
StatusFalscheFrage = LOW;
}
}

// ------------------------------------------------------------------------- Create a client connection
client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();

if (readString.length() < 100) { //read char by char HTTP request
readString += c; //store characters to string
}
if (c == '\n') { //if HTTP request has ended
LetzteZeitAus = millis();
Serial.println(readString); //print to serial monitor for debuging
client.stop();

// ------------------------------------------------------------------------- Programmstand erkennen
if(readString.indexOf("Joker=Joker+einl") > -1) { // ----- Joker einlösen
if(readString.indexOf("Code=36811") > -1) { //// --- Code Frage 2
Serial.println("Code Frage 2 erkannt");
Fragencounter = 2;
printMyFile("0102fr.txt");
}
else if (readString.indexOf("Code=63026") > -1) { //// --- Code Frage 3
Serial.println("Code Frage 3 erkannt");
Fragencounter = 3;
printMyFile("0103fr.txt");
}
else if (readString.indexOf("Code=98222") > -1) { //// --- Code Frage 4
Serial.println("Code Frage 4 erkannt");
Fragencounter = 4;
printMyFile("0104fr.txt");
}
else if (readString.indexOf("Code=23284") > -1) { //// --- Code Frage 5
Serial.println("Code Frage 5 erkannt");
Fragencounter = 5;
printMyFile("0105fr.txt");
}
else if (readString.indexOf("Code=88168") > -1) { //// --- Code Frage 6
Serial.println("Code Frage 6 erkannt");
Fragencounter = 6;
printMyFile("0106fr.txt");
}
else if (readString.indexOf("Code=47022") > -1) { //// --- Code Frage 7
Serial.println("Code Frage 7 erkannt");
Fragencounter = 7;
printMyFile("0107fr.txt");
}
else if (readString.indexOf("Code=20692") > -1) { //// --- Code Frage 8
Serial.println("Code Frage 8 erkannt");
Fragencounter = 8;
printMyFile("0108fr.txt");
}
else if (readString.indexOf("Code=80692") > -1) { //// --- Code Frage 9
Serial.println("Code Frage 9 erkannt");
Fragencounter = 9;
printMyFile("0109fr.txt");
}
else if (readString.indexOf("Code=39762") > -1) { //// --- Code Frage 10
Serial.println("Code Frage 10 erkannt");
Fragencounter = 10;
printMyFile("0110fr.txt");
}
else if (readString.indexOf("Code=46047") > -1) { //// --- Code Frage 11
Serial.println("Code Frage 11 erkannt");
Fragencounter = 11;
printMyFile("0111fr.txt");
}
else if (readString.indexOf("Code=97346") > -1) { //// --- Code Frage 12
Serial.println("Code Frage 12 erkannt");
Fragencounter = 12;
printMyFile("0112fr.txt");
}
else if (readString.indexOf("Code=68095") > -1) { //// --- Code Frage 13
Serial.println("Code Frage 13 erkannt");
Fragencounter = 13;
printMyFile("0113fr.txt");
}
else if (readString.indexOf("Code=92060") > -1) { //// --- Code Frage 14
Serial.println("Code Frage 14 erkannt");
Fragencounter = 14;
printMyFile("0114fr.txt");
}
else if (readString.indexOf("Code=05860") > -1) { //// --- Code Frage 15
Serial.println("Code Frage 15 erkannt");
Fragencounter = 15;
printMyFile("0115fr.txt");
}
else if (readString.indexOf("Code=") > -1) { //// --- Kein Code eingegeben
Serial.println("Kein Code eingegeben");
Fragencounter = 0;
printMyFile("startp.txt");
}
}
else if(readString.indexOf("Neu=Neues+Spiel") > -1) { // ----- Neues Spiel
Serial.println("Neues Spiel starten erkannt und Zeit abfragen");
if (StatusFalscheFrage == HIGH) {
Serial.println("Neustart gesperrt");
printMyFile("zsperr.txt");
}
else if (StatusFalscheFrage == LOW) {
Serial.println("Neustart frei");
Fragencounter = 1;
printMyFile("0101fr.txt");
}
}
else if(Fragencounter >> 1 && readString.indexOf("Antw=") > -1) { // ----- Frage 1
Serial.println("Antwort Frage erkannt");
if (readString.indexOf("Antw=B") > -1) { //// --- Richtig
Serial.println("Richtig"); }
else {
Serial.println("Falsch");
}
}
else { // ----- Nichts erkannt - neuladen
Serial.println("Keine Anfrage erkannt - neuladen");
}
}
client.stop();
readString="";
}
}
}
}

// ------------------------------------------------------------------------- Client ausgeben

void printMyFile(char* filename) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
File myFile = SD.open(filename);
if (myFile) {
while (myFile.available()) {
client.write(myFile.read());
}
myFile.close();
}
delay(1000);
}

Jooo.....

G
Sven