Bei diesem kleinen Geschicklichkeitsspiel geht es darum, immer dann den Taster zu drücken wenn die LED in der Mitte leuchtet. Am Anfang des Spiels leuchten die LEDs langsam von links nach rechts und wieder zurück. Mit jedem Durchgang wird das blinken der LEDs schneller. Schafft man es bis zum Ende immer richtig zu drücken ertönt eine Melodie von tief nach hoch.
Drück der Spieler im falschen Moment, ertönt eine Melodie von hoch nach tief, zudem bliebt die LED an, bei der falsch gedrückt wurde. Durch einen Druck auf den Taster beginnt das von vorne. Hier die erste Version, als kurzes Video.
Hardware LED Geschicklichkeitsspiel
Für die Hardware habe ich wie so oft das GROVE System von SEEED verwendet. Das Spiel kann aber auch auf dem Breadbord nachgesteckt werden. Es braucht nur 5 LEDs, einen Summer, einen Taster, einen Arduino und in meinem Fall ein grove shield.
Das Spiel kann auch mit 3 oder 7 LEDs gebaut werden, wobei es mit 7 LEDs keinen Sinn macht. Da der Spieler rel. lang warten muss bis die LED in der Mitte leuchtet. Ich habe 5 LEDs verwendet, diese bitte dann noch mit einem Vorwiderstand versehen. Die PIN Belegung ist auch eine andere wie auf dem Breadbord, bitte aus den Ardublock Bildern entnehmen.
Software mit Ardublock für das LED Geschicklichkeitsspiel
Im "setup" Teil kann in der Variablen "zeit2" die Zeit eingestellt werden die gespielt wird. Ich habe zum testen 500ms genommen. 1000 wären für ein richtiges Spiel vermutlich besser. Danach kommt der erste "teste" Block, hier wird geprüft ob das Spiel startbereit ist. Danach folgt der "only_every" Block, dieser wird benötigt, da für die Zeit keine "Delay" Schleife verwendet werden kann. Da während eines Delay keine Taster abgefragt werden können. Die "ms" Angabe erfolgt über die Variable "zeit2", da sich dieser Wert ja im laufe des Spieles ändert. Der weitere "falls" Block prüft nun ab zeit1=8 ist. Ist dies der Fall ist das Blinken der LEDS einmal von links nach rechts durchgelaufen und beginnt nun von vorne. Die Variable "zeit2-10" sogt dafür dass sich die Geschwindigkeit der LEDs verändert.
Unterprogramm 1 und 2 erkläre ich weiter unten. Im nächsten "falls" Block kann die Zeit eingestellt werden, wann das Spiel gewonnen ist. Bei 300ms kann man das Spiel gewinnen, unter 100ms ist es eigentlich nicht möglich da sich die LEDs dann zu schnell bewegen. Der Restliche Block sorgt dafür, wenn das Spiel gewonnen ist, dass die Töne kommen und die Bedingung vom Anfang nicht mehr erfüllt ist. Der letze "falls" Block sogt für den Reset des Spieles. Es werden alle Variablen zurückgesetzt und die LEDs ausgeschaltet.
Das "Unterprogramm1" schaltet die LEDs von links nach rechts und wieder zurück ein und aus. Damit nicht in jedem "falls" Block die LEDs ausgeschaltet werden müssen, gibt es das "Unterprogramm", das rechts im Bild ist.
Im "Unterprogramm2" sorgt der erste "falls" Block dafür dass das Programm erkennt wenn der Spieler richtig gedrückt hat. Die LED ist in der Mitte wenn die Variable "zeit1" eben 3 oder 2 ist, dann muss der Taster gedrückt werden.
Im zweiten "falls" Block erkennt das Programm wenn der Spieler falsch gedrückt hat. WEnn die Variable "zeit1" eine der anderen Zahlen ist.
Das Spiel könnte auch gut mit einem NEO-PIXEL Streifen nachgebaut werden.