Corona-Aufgabe
In Zusammenarbeit mit Eva Schwegle
(Aufgabe 1 bei Eva Schwegle)
Schlag den Maulwurf
Materialien:
- Arduino Uno
- 7 LEDs
-7 220 ohm Widerstände
-Breadboard
-Analog Joystick
-12 Kabel
Aufbau:
Der Joystick muss mit GND, 5V, A0 und A1 auf dem Arduiono verbunden werden.
Funktionsweise:
Es gibt vier Maulwürfe, die der dritten, vierten, fünften und sechsten LED von links entsprechen. Wenn eine der vier Lampen zufällig aufleuchtet, muss der Joystick in einer bestimmten Zeit in die entsprechende Richtung bewegt werden.Um den ersten "Maulwurf" anzusteuern, muss man ihn nach rechts bewegen, für den zweiten nach unten, für den dritten nach oben und für den vierten nach rechts. ( Es kann sein, dass das Programm nicht funktioniert, da ich es eigenständig verändert habe um von der Steuerung vom Original Programm abzuweichen.)
Um zu sehen ob man einen Erfolg oder Misserfolg hat, gibt es die rote und die grüne Lampe links. Um wieder vom Original Programm abzuweichen, habe ich es so verändert, dass bei einem Erfolg die rote Lampe aufleuchtet und bei einem Misserfolg die grüne Lampe. Dadurch wird sicherlich auch nochmal der Schwierigkeitsgrad erhöht, da es den Spieler Anfangs verwirrt ;).
Die gelbe Lampe ganz rechts gibt durch blinken den Highscore an. Wenn eine Runde nach einem Misserfolg zu ende ist, gibt sie auch durch blinken den Spielstand an. Ein neuer Highscore ersetzt automatisch den alten.
Code:
//Der Code kann einige Fehler enthalten, da ich ihn verändert habe.
//Um die Scheirigkeit zu verändern muss man die delay Zeiten verändern.
int sY = A1; //y-Achse Joystick, Analog Input
int sSX; //Status von X wird gelesen von sX
int sSY; //Status von Y wird gelesen von sY
int sS;
int rNum; //zufälliger int wählt zufällige LED, die angeht
int wins=0; //zählen aufeinanderfolgende Siege
int highScore=0; //Speichern von Highscores
const int stupid=1000;
const int easy=500;
const int medium=325;
const int hard=250;
int ledPins[]={5,2,4,3,6,7,8}; // Initialinsierung von LEDs
int pinCount=7; // Anzahl von LEDs
pinMode(sX, INPUT);
pinMode(sY, INPUT);
pinMode(ledPins[thisPin], OUTPUT);
}
}
delay(1000);
digitalWrite(ledPins[rNum], HIGH); //Erleuchten der zufällig ausgewählten LED
delay(stupid); // Schwirigkeitsgrad
sSX = analogRead(sX); //Auslesen der x-Achse input
delay(100);
sSY = analogRead(sY); //Auslesen der y-Achse input
switch (sSX) {
case 1023:
sS=1; // rechts
break;
case 0:
sS=2; // links
break;
}
switch (sSY) {
case 1023:
sS=3; // unten
break;
case 0:
sS=4; //oben
break;
}
if (sS-1==rNum) //prüfen, ob der Spieler die richtige LED angesteuert hat.
{
wins++;
for (int k=0; k<=3; k++) { //rotes Blinken, wenn die Antwort richtig ist
digitalWrite(ledPins[5], HIGH);
delay(50);
digitalWrite(ledPins[5], LOW);
delay(50);
}
}
else
{
if (wins>highScore) { //wenn der Highscore geknackt wurde, wird der neue Highscore gespeichert
highScore=wins;
wins=0;
}
for (int i=0; i<=3; i++) { //grünes Blinken bei einer falschen Antwort
digitalWrite(ledPins[4], HIGH);
delay(50);
digitalWrite(ledPins[4], LOW);
delay(50);
}
for (int w=0; w <highScore;w++) { // Durch blinken wird der Highscore angegeben.
delay(200);
digitalWrite(ledPins[6], LOW);
delay(200);
}
}
}