Paso 3: El código
Adjunto es el archivo de código de Arduino.Código:
int ledDelay; Tiempo de espera de LED
int cuenta; puntos que usted consigue
currentLed de bytes; que se enciende para arriba ahora mismo
Boolean iniciado; ¿Es el juego?
Boolean needNewLed = true; Necesitamos un nuevo LED
salud de byte = 6; salud restante
Actual boolean = true; ¿Necesitamos actualizar la pantalla?
Boolean lostHealth = false; ¿tenemos que restar uno de la salud?
int val2, val3, val4, val5; variable para lectura del estado del pin
int buttonState2, buttonState3, buttonState4, buttonState5; variable para mantener el último estado de botón
void setup() {}
modo de los pernos
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
para mostrar la puntuación
Serial.Begin(9600);
Serial.println("+---------------------------------------------------------------+");
Serial.println("| Bienvenido a ButtonHero! |");
Serial.println("| Cuando una luz se enciende, presione el botón correspondientes. |");
Serial.println("| Pierdes puntos por ser demasiado lento o pulsando el botón equivocado. | ");
Serial.println("| Pulse cualquier botón para iniciar la... | ");
Serial.print("+---------------------------------------------------------------+");
}
void loop() {}
//
Si (digitalRead (2) == alta || digitalRead (3) == alta || digitalRead (4) == alta || digitalRead(5)==HIGH) {}
Iniciado = true; iniciar el juego si se presiona cualquier botón
}
Si (iniciado == true) {}
Si (needNewLed == true) {//we necesita otro LED
digitalWrite (currentLed, bajo); Apague el
byte randomLed = random(9,13); elegir un LED al azar
while(currentLed == randomLed) {//make seguro no es lo mismo que la última
randomLed = random(9,13);
}
currentLed = randomLed;
digitalWrite (currentLed, HIGH); encenderá el LED nuevo
Delay(100); esperar un poco
needNewLed = false;
}
val2 = digitalRead(2); leer valor de entrada y almacena en val
val3 = digitalRead(3); leer valor de entrada y almacena en val
val4 = digitalRead(4); leer valor de entrada y almacena en val
val5 = digitalRead(5); leer valor de entrada y almacena en val
Si (val2! = buttonState2 & & val2 == alta || val3! = buttonState3 & & val3 == alta || val4! = buttonState4 & & val4 == alta || val5! = buttonState5 & & val5 == HIGH) {/ / el estado de botón ha cambiado!
Si (currentLed == 9 & & digitalRead(5) == HIGH) {/ / ¿golpeó el botón derecho?
cuenta ++;
needNewLed = true;
ledDelay = 0;
Actual = true;
}
else if (currentLed == 10 & & digitalRead(4) == HIGH) {/ / ¿golpeó el botón derecho?
cuenta ++;
needNewLed = true;
ledDelay = 0;
Actual = true;
}
else if (currentLed == 11 & & digitalRead(3) == HIGH) {/ / ¿golpeó el botón derecho?
cuenta ++;
needNewLed = true;
ledDelay = 0;
Actual = true;
}
else if (currentLed == 12 & & digitalRead(2) == HIGH) {/ / ¿golpeó el botón derecho?
cuenta ++;
needNewLed = true;
ledDelay = 0;
Actual = true;
}
else if (digitalRead (2) == alta || digitalRead (3) == alta || digitalRead (4) == alta || digitalRead(5)==HIGH) {/ / ¿golpeó el botón equivocado?
loseHealth();
lostHealth = true;
}
}
Else {/ / no presionan nada
ledDelay ++;
Delay(1);
}
buttonState2 = val2; guardar el nuevo estado en nuestra variable
buttonState3 = val3; guardar el nuevo estado en nuestra variable
buttonState4 = val4; guardar el nuevo estado en nuestra variable
buttonState5 = val5; guardar el nuevo estado en nuestra variable
¿el LED alcance el umbral de tiempo de espera?
Si (calificación < = 10) {}
if(ledDelay == 1000) {}
loseHealth();
lostHealth = true;
}
}
else if (puntaje < = 15) {}
if(ledDelay == 800) {}
loseHealth();
lostHealth = true;
}
}
else if (puntaje < = 20) {}
if(ledDelay == 600) {}
loseHealth();
lostHealth = true;
}
}
else if (puntaje < = 25) {}
if(ledDelay == 400) {}
loseHealth();
lostHealth = true;
}
}
else if (puntaje < = 30) {}
if(ledDelay == 200) {}
loseHealth();
lostHealth = true;
}
}
else if (resultado > 30) {}
Si (ledDelay == (220-score)) {}
loseHealth();
lostHealth = true;
}
}
actualización de la pantalla
{if(updateScreen==true)}
Serial.println(' ');
Serial.println("+---------------------------------------------------------------+");
Serial.println("| |");
Serial.Print("| Calificación: ");
Serial.Print(score);
if(score<10) {}
Serial.println(" |");
}
otra cosa if(score<100) {}
Serial.println(" |");
}
otra cosa if(score<1000) {}
Serial.println(" |");
}
{if(Health==6)}
salud = 5;
}
{if(Health==5)}
Serial.println("| Vidas: < 3 < 3 < 3 < 3 < 3 | ");
Serial.println("| |");
}
else {} if(health==4)
Serial.println("| Vidas: < 3 < 3 < 3 < 3 | ");
Serial.println("| |");
}
else {} if(health==3)
Serial.println("| Lives: <3 <3 <3 |");
Serial.println("| |");
}
else {} if(health==2)
Serial.println("| Lives: <3 <3 |");
Serial.println("| |");
}
else {} if(health==1)
Serial.println("| Lives: <3 |");
Serial.println("| |");
}
else {} if(health==0)
Serial.println("| Lives: |");
Serial.println("| ¡Has perdido! |");
salud = 6;
puntaje = 0;
}
Serial.print("+---------------------------------------------------------------+");
Actual = false;
}
}
lostHealth = false;
}
restar una salud
void loseHealth() {}
{if(lostHealth==false)}
salud--;
Actual = true;
needNewLed = true;
ledDelay = 0;
¿Si (salud < = 0) {/ / perdió el juego?
Iniciado = false;
Actual = true;
parpadear 3 veces
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
Delay(200);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
Delay(200);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
Delay(200);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
Delay(200);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
Delay(200);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
}
}
}