Hallo Leute. Ich muss in der Schule ein Reaktionsspiel bauen, da ich ein paar Probleme und Fragen habe, habe ich mich hier registriert und es wäre nett, wenn ihr mir helfen würdet. (Muss das Spiel bald fertig haben, hoffe also auf schnelle Antworten ).
Als erstes möchte ich mal euch mein Sketch zeigen, ich habe ihn geschrieben, kann ihn jedoch nicht ausprobieren, da irgendetwas mit dem MSP-Board nicht stimmt. Wäre gut, wenn ihr ihn auf Richtigkeit überprüfen würdet.
Das Spiel ist so aufgebaut, dass es 8 LEDs und 3 Taster gibt. 7 LEDs sind grün und in einer Reihe, die 8., gelbe LED ist in der Mitte darunter. Am anfang leuchtet die mittlere LED der 7-er-Reihe. Irgendwann soll die gelbe darunter blinken. Die 2 Spieler haben jeweils einen Taster und die LED der 7-er-Reihe wandert dann in die Richtung desjenigen, der zuerst den Taster gedrückt hat.
Leuchtet die erste oder letzte LED der 7-er-Reihe, so hat der 1. beziehungsweise der 2. Spieler gewonnen und das Spiel ist beendet. Der 3.Taster soll das Spiel starten, beenden beziehungsweise neustarten.
Sketch:
int tasterpin0 = 14;
int tasterpin1 = 7;
int tasterpin2 = 15;
int lednummer = 4;
int led1 = 9;
int led2 = 5;
int led3 = 2;
int led4 = 19;
int led5 = 12;
int led6 = 13;
int led7 = 18;
int gelbeLED = 11;
void setup() {
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
pinMode(led7,OUTPUT);
pinMode(gelbeLED,OUTPUT);
pinMode(tasterpin2, INPUT);
pinMode(tasterpin1, INPUT);
pinMode(tasterpin0, INPUT);
}
void loop() {
int taster0 = digitalRead (tasterpin0);
int taster2 = digitalRead (tasterpin2);
int taster1 = digitalRead (tasterpin1);
if (lednummer == 2){
digitalWrite (led2, HIGH);
}
else {
digitalWrite (led2, LOW);
}
if (lednummer == 3){
digitalWrite (led3, HIGH);
}
else {
digitalWrite (led3, LOW);
}
if (lednummer == 4){
digitalWrite (led4,HIGH);
}
else {
digitalWrite (led4,LOW);
}
if (lednummer == 5){
digitalWrite (led5,HIGH);
}
else {
digitalWrite (led5,LOW);
}
if (lednummer == 6){
digitalWrite (led6,HIGH);
}
else {
digitalWrite (led6,LOW);
}
if (lednummer == 7){
digitalWrite (led7,HIGH);
delay(1000);
digitalWrite (led7,LOW);
delay(1000);
digitalWrite (led7,HIGH);
delay(1000);
digitalWrite (led7,LOW);
delay(1000);
digitalWrite (led7,HIGH);
delay(1000);
digitalWrite (led7,LOW);
delay(1000);
// Hier kommt noch was, mehr dazu in der Frage
}
else {
digitalWrite (led7,LOW);
}
if (lednummer == 1){
digitalWrite (led1,HIGH);
delay(1000);
digitalWrite (led1,LOW);
delay(1000);
digitalWrite (led1,HIGH);
delay(1000);
digitalWrite (led1,LOW);
delay(1000);
digitalWrite (led1,HIGH);
delay(1000);
digitalWrite (led1,LOW);
delay(1000);
// Hier kommt noch was, mehr dazu in der Frage
}
else {
digitalWrite (led1,LOW);
}
if(gelbeLED == LOW){
int rndNR = random(3000,8400);
delay(rndNR);
digitalWrite (gelbeLED,HIGH);
}
else {
}
if (taster1 == LOW && taster2 == HIGH && gelbeLED == HIGH) {
lednummer = lednummer-1;
digitalWrite (gelbeLED,LOW);
}
else {
}
if (taster1 == HIGH && taster2 == LOW && gelbeLED == HIGH) {
lednummer = lednummer+1;
digitalWrite (gelbeLED,LOW);
}
else {
}
if (taster1 == LOW && taster2 == LOW && gelbeLED == HIGH) {
digitalWrite (gelbeLED,LOW);
}
else {
}
}
Fragen würde ich gerne, wie man ein Unterprogramm öffnet, welches sich aber immer wiederholt, also loop ist. Ich würde nämlich gerne es so programmieren, dass, wenn die 1., die 7. LED leuchtet oder der Taster0 gedrückt wird in ein Unterprogramm gewechselt wird, was nichts macht, also es den Anschein hat, dass das der Sketch "aus" und dann wieder zum void loop wechselt, wenn der Taster0 wieder gedrückt wird.
Und ansonsten, wie schon gesagt, wäre es nett, wenn ihr mir sagen könnt, ob was nicht richtig ist.