#include //Memory_Shield //LEDs und Taster müssen Invertiert werden, da gegen Masse geschaltet wird #define BUTTON0 1 #define BUTTON1 5 #define BUTTON2 3 #define BUTTON3 4 #define MAXLEVEL 10 int buttons[] = { BUTTON0, BUTTON1, BUTTON2, BUTTON3 }; int state = 0; int level = 0; int musterVorgabe[MAXLEVEL] = {}; int musterEingabe[MAXLEVEL] = {}; void setup() { //alle LEDs löschen portMode(1, OUTPUT); portWrite(1, 0); //LEDs vom Shield ausschalten for (int i = 0; i < 4; i++) { digitalWrite(buttons[i], HIGH); } //Tft initialisieren Tft.begin(); //Zufallszahl starten randomSeed(analogRead(39)); } void loop() { switch (state) { case 0: // neue Runde //Gruppe 1 start =============================================================================== //Gruppe 1 ende ================================================================================ break; case 1: // Ausgabe aktuelle Runde //Gruppe 2 start =============================================================================== portMode(1,2); for(int i=0;i<=level;i++){ digitalWrite(buttons[mustervorgabe[i]], LOW); delay(250); digitalWrite(buttons[mustervorgabe[i]], HIGH); delay(250); } //Gruppe 2 ende ================================================================================ break; case 2: // Eingabe aktuelle Runde //Gruppe 3 start =============================================================================== pinMode(BUTTON0, INPUT); pinMode(BUTTON1, INPUT); pinMode(BUTTON2, INPUT); pinMode(BUTTON3, INPUT); Tft.setCursorCharacter(1,1); Tft.print("Eingabe "); for(int i = 0, i <= level, i++) { while(musterEingabe[i] == -1) { for(int j = 0; j < 4, j++) { while(digitalRead(buttons[j]) == false) { musterEingabe[i] = j; } } delay(100); } Tft.print("."); } //Gruppe 3 ende ================================================================================ break; case 3: // Vergleich Eingabe/Ausgabe //Gruppe 4 start =============================================================================== //Gruppe 4 ende ================================================================================ break; case 4: // geschafft, Runde hochzählen und auf Display ausgeben //Gruppe 5 start =============================================================================== Tft.setCursorCharacter(3, 1); Tft.print("Gewonnen!"); level++; state = 1; //Gruppe 5 ende ================================================================================ break; case 5: // verloren //Gruppe 6 start =============================================================================== Tft.setCursorCharacter(1,1); Tft.print("Du hast verloren :( ")); Tft.setCursorCharacter(3,1); Tft.print(" Bis Level: " + String(level) + " erreicht."); delay(5000); state = 0; //Gruppe 6 ende ================================================================================ break; } }