Auf dieser Seite findest du einige Arduino Spiele mit LEDs und Tastern. Diese Spiele können dir helfen mit dem Arduino und seiner Programmierung einfach mal anzufangen und erste Erfahrungen beim Programmieren zu sammeln. Die Seite wird immer mal wieder ergänzt und am Ende findest die schon Ideen von mir die aber noch nicht auf dem Breadborad verfügbar sind.
Bombe entschärfen
Die 3 Schalter müssen am besten durch drei Drähte ersetzt werden. Nur wenn man die drei Drähte in der richtigen Reihenfolge entfernt (hier die 3 Schalter, in der richtigen Reihenfolge schaltet) ist die Bombe entschärft. Wer findet die Regel heraus nach der die Bombe entschärft werden muss? Hier gilt das alte Sprichwort, Versuch macht kluch :-).... Wird ein falsche Reihenfolge gewählt, gibt der Summer einen Ton von sich. Während des Spieles blinkt die rote LED, ist die Bombe entschärft, geh die rote LED aus und die grüne LED leuchtet dauerhaft. Video vom Spiel https://www.youtube.com/watch?v=_oO6vman4MM
Arduino Code
int folge = 0;
int blink = 0;
long zeit = 0L;void setup() {
pinMode(2, INPUT);
pinMode(4, INPUT);
pinMode(6, INPUT);
pinMode(13, OUTPUT);
folge = 0;blink = 0;}void loop() {
zeit = millis();
while(zeit + 300L >= millis()) {
if (( blink == 1 )) {analogWrite(11 , 200);
}
if (( blink == 2 )) {analogWrite(11 , 0);
}
if (( blink == 3 )) {blink = 0;
}
if (( folge == 0 )) {if (!( digitalRead(2) )) {folge = 1;
}
if (( !( digitalRead(4) ) || !( digitalRead(6) ) )) {digitalWrite( 13 , HIGH );
delay( 1100 );
digitalWrite( 13 , LOW );
folge = 0;
}
}
if (( folge == 1 )) {if (!( digitalRead(4) )) {folge = 2;
}
if (( digitalRead(2) || !( digitalRead(6) ) )) {digitalWrite( 13 , HIGH );
delay( 1100 );
digitalWrite( 13 , LOW );
folge = 0;
}
}
if (( folge == 2 )) {if (!( digitalRead(6) )) {folge = 3;
}
if (( digitalRead(2) || digitalRead(4) )) {digitalWrite( 13 , HIGH );
delay( 1100 );
digitalWrite( 13 , LOW );
folge = 0;
}
}
while ( ( folge == 3 ) ) {
analogWrite(10 , 200);
analogWrite(11 , 0);
}
}
blink = ( blink + 1 );
}
Kopf oder Zahl
Früher hat man eine Münze in die Luft geworfen und wieder aufgefangen so hatte man schnell eine Entscheidung. Ob das dann immer die besten Entscheidung war, wage ich zwar zu bezweifeln aber man hatte eine Entscheidung. Anstatt Kopf und Zahl gibt es hier zwei LEDs, eine rote und blaue LED, die über einen Zufallsgenerator eingeschaltet werden. Video vom Spiel: https://www.youtube.com/watch?v=gNtdE3ZRQpA
Arduino Code
int zufall = 0;void setup() {
pinMode(2, INPUT);
}void loop() {
if (digitalRead(2)) {zufall = random( 1 , 3 );
analogWrite(11 , 0);
analogWrite(10 , 0);
delay( 700 );
if (( zufall == 1 )) {analogWrite(10 , 160);
}
if (( zufall == 2 )) {analogWrite(11 , 160);
}
}
}
Spielautomat
Das Spiel ist auch als Einarmiger Bandit bekannt, Ziel ist es das alle 4 LEDs leuchten. Dabei blinkt die erste LED, der Taster muss gedrückt werden, wenn die LED gerade leuchtet. Ist dies erledigt, blinkt die nächste LED und der Taster musserneut dann gedrückt werden wenn die zweite LED leuchtet. Das Spiel ist gewonnen wenn alle 4 LEDs leuchten. Über den Reset Taster des Arduino beginnt das von neuem. Video vom Spiel: https://www.youtube.com/watch?v=eqBSfSaeLKY
Arduino Code
int blink = 0;
int pinout = 6;
long Zeit = 0L;
void setup() {
pinMode(2, INPUT);
blink = 0;
pinout = 6;
}
void loop() {
Zeit = millis();
while(Zeit + 200L >= millis()) {
if (( blink == 1 )) {
analogWrite(pinout , 0);
}
if (( blink == 2 )) {
analogWrite(pinout , 160);
}
if (( blink == 3 )) {
blink = 0;
}
if (digitalRead(2)) {
if (( ( blink == 2 ) || ( blink == 0 ) )) {
delay( 1000 );
if (( pinout == 11 )) {
pinout = 13;
}
if (( pinout == 10 )) {
pinout = 11;
}
if (( pinout == 9 )) {
pinout = 10;
}
if (( pinout == 6 )) {
pinout = 9;
}
}
if (( blink == 1 )) {
analogWrite(6 , 0);
analogWrite(9 , 0);
analogWrite(10 , 0);
analogWrite(11 , 0);
delay( 1000 );
pinout = 6;
}
}
}
blink = ( blink + 1 );
}
Konzentrationsspiel / Reaktionsspiel
Mehrere, keine oder auch alle, der vier LEDs leuchten zufällig. Nur wenn die beiden äußeren LEDs leuchten muss der Taster gedrückt werden. Vergisst der Spieler den Taster zu drücke wenn die beiden äußeren LEDs leuchten hat er das Spiel verloren. Wurde richtig gedrückt leuchten die blaue LED und die beiden äußern LEDs blinken. Wurde falsch gedrückt, leuchtet die blaue LED und die beiden mittleren LEDs blinken. Video von dem Spiel: https://www.youtube.com/watch?v=JwL3o3RjNFY
Arduino Code:
int zeit1 = 0;
bool jetzt = false;
bool geschafft = false;
long zeit2 = 0L;
int zufall1 = 0;
int zufall2 = 0;
int zufall3 = 0;
int zufall4 = 0;
int punkte = 0;void setup() {
pinMode(2, INPUT);
zeit1 = 0;jetzt = false;geschafft = false;}void loop() {
zeit2 = millis();
while(zeit2 + 500L >= millis()) {
if (( zeit1 == 1 )) {zufall1 = map ( random( 100 ) , 0 , 100 , 0 , 2 ) ;
zufall2 = map ( random( 300 ) , 0 , 300 , 0 , 2 ) ;
zufall3 = map ( random( 700 ) , 0 , 700 , 0 , 2 ) ;
zufall4 = map ( random( 900 ) , 0 , 900 , 0 , 2 ) ;
if (( zufall1 == 1 )) {analogWrite(6 , 200);
}
if (( zufall2 == 1 )) {analogWrite(9 , 200);
}
if (( zufall3 == 1 )) {analogWrite(10 , 200);
}
if (( zufall4 == 1 )) {analogWrite(11 , 200);
}
zeit1 = 2;
}
if (( ( ( zufall1 == 1 ) && ( zufall4 == 1 ) ) && ( ( zufall2 == 0 ) && ( zufall3 == 0 ) ) )) {jetzt = true;
if (digitalRead(2)) {geschafft = true;
punkte = ( punkte + 1 );
}
}
if (( zeit1 == 3 )) {if (( jetzt == true )) {if (( geschafft == true )) {analogWrite(6 , 0);
analogWrite(9 , 0);
analogWrite(10 , 0);
analogWrite(11 , 0);
analogWrite(3 , 200);
for (int i = 0; i < 5; i++) {
analogWrite(6 , 200);
analogWrite(11 , 200);
delay( 300 );
analogWrite(6 , 0);
analogWrite(11 , 0);
delay( 300 );
}
}
else {
analogWrite(6 , 0);
analogWrite(9 , 0);
analogWrite(10 , 0);
analogWrite(11 , 0);
analogWrite(3 , 200);
for (int i = 0; i < 5; i++) {
analogWrite(9 , 200);
analogWrite(10 , 200);
delay( 300 );
analogWrite(9 , 0);
analogWrite(10 , 0);
delay( 300 );
}
}
analogWrite(3 , 0);
zeit1 = 0;
jetzt = false;
geschafft = false;
delay( 1700 );
}
zeit1 = 0;
analogWrite(6 , 0);
analogWrite(9 , 0);
analogWrite(10 , 0);
analogWrite(11 , 0);
}
}
zeit1 = ( zeit1 + 1 );
}
Hau den Lukas
Je nachdem wie lange der Taster gedrückt wurde leuchten die LEDs der Reihe nach auf, wer es schafft dass alle neun LEDs an sind hat gewonnen. Wurde zu lange gedrückt gehen alle LEDs wieder aus und der Spieler hat verloren. Deshalb lieber rechtzeitig loslassen. Leuchten auch nur drei LEDs ist immer noch besser als keine :-).... Video vom Spiel: https://www.youtube.com/watch?v=yyf8qrVLDVo
Arduino Code
bool spiel = false;
int zeit = 0;
int zeit2 = 1;
int led = 12;
long zeit1 = 0L;void setup() {
pinMode(12, OUTPUT);
pinMode(2, INPUT);
pinMode(led, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
spiel = false;zeit = 0;zeit2 = 1;led = 12;}void loop() {
zeit1 = millis();
while(zeit1 + 200L >= millis()) {
if (( zeit2 == 1 )) {digitalWrite( 12 , HIGH );
}
if (( zeit2 == 2 )) {digitalWrite( 12 , LOW );
}
if (( zeit2 == 5 )) {zeit2 = 1;
}
while ( digitalRead(2) ) {
zeit = ( zeit + 1 );
spiel = true;
digitalWrite( 12 , HIGH );
delay( 500 );
if (( zeit > 9 )) {zeit = 10;
}
}
while ( ( spiel == true ) ) {
for (int i = 0; i < zeit; i++) {
digitalWrite( led , HIGH );
led = ( led - 1 );
delay( 500 );
}
if (( zeit > 9 )) {digitalWrite( 12 , LOW );
digitalWrite( 11 , LOW );
digitalWrite( 10 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 8 , LOW );
digitalWrite( 7 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 4 , LOW );
delay( 1000 );
spiel = false;
zeit = 0;
led = 12;
}
while ( ( spiel == true ) ) {
while ( digitalRead(2) ) {
spiel = false;
zeit = 0;
led = 12;
digitalWrite( 12 , LOW );
digitalWrite( 11 , LOW );
digitalWrite( 10 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 8 , LOW );
digitalWrite( 7 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 4 , LOW );
delay( 700 );
}
}
}
}
zeit2 = ( zeit2 + 1 );
}
Arduino Würfel
Ein Spielwürfel, umgangssprachlich einfach Würfel (von althochdeutsch wurfil: verwandt mit Wurf und werfen), ist ein Gegenstand, der nach einem Wurf auf einer waagerechten Ebene eine von mehreren unterscheidbaren stabilen Ruhelagen einnimmt und in vielen Spielen zum Erzeugen eines zufälligen Symbols (oft einer Zufallszahl) dient. Die mit Abstand meistverbreiteten Spielwürfel sind jene mit den Ziffern 1 bis 6 oder entsprechend vielen Punkten, den Augen, beschriftete Kuben oder Hexaeder. In unsere digitalen Welt gibt es natürlich auch eine digitale Version des Würfels.
Arduino Code
int zufall = 0;void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}void loop() {
if (!( digitalRead(2) )) {digitalWrite( 3 , LOW );
digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
digitalWrite( 8 , LOW );
digitalWrite( 9 , LOW );
delay( 700 );
zufall = random( 5 );
if (( zufall == 0 )) {digitalWrite( 5 , HIGH );
}
if (( zufall == 1 )) {digitalWrite( 4 , HIGH );
digitalWrite( 8 , HIGH );
}
if (( zufall == 2 )) {digitalWrite( 4 , HIGH );
digitalWrite( 5 , HIGH );
digitalWrite( 8 , HIGH );
}
if (( zufall == 3 )) {digitalWrite( 3 , HIGH );
digitalWrite( 4 , HIGH );
digitalWrite( 8 , HIGH );
digitalWrite( 9 , HIGH );
}
if (( zufall == 4 )) {digitalWrite( 3 , HIGH );
digitalWrite( 4 , HIGH );
digitalWrite( 5 , HIGH );
digitalWrite( 8 , HIGH );
digitalWrite( 9 , HIGH );
}
if (( zufall == 5 )) {digitalWrite( 3 , HIGH );
digitalWrite( 4 , HIGH );
digitalWrite( 7 , HIGH );
digitalWrite( 6 , HIGH );
digitalWrite( 8 , HIGH );
digitalWrite( 9 , HIGH );
}
delay( 1000 );
}
}
Tennis Spiel für eine oder zwei Personen
Die LEDs blinken von rechts nach links und immer wenn die LED ganz außen ist muss der Spieler den Taster drücken. Dabei werden die LEDs immer schneller. Das Spiel geht so lange bis ein Spieler zu spät, zu früh oder einfach falsch gedrückt hat. Video von dem Spiel: https://www.youtube.com/watch?v=YGBfXPzKHj8
Arduino Code
bool richtung = true;
int zeit3 = 500;
int zeit2 = 6;
bool spieler1 = false;
bool spieler2 = false;
long zeit1 = 0L;
int zeit4 = 0;
void Unterprogramm1();void Unterprogramm2();void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(2, INPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(3, INPUT);
richtung = true;zeit3 = 500;zeit2 = 6;spieler1 = false;spieler2 = false;}void loop() {
zeit1 = millis();
while(zeit1 + zeit3 >= millis()) {
if (( zeit2 == 1 )) {digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
if (digitalRead(2)) {spieler1 = true;
}
richtung = true;
spieler2 = false;
}
if (( zeit2 == 2 )) {if (( ( spieler1 == false ) && ( richtung == true ) )) {while ( ( 1 == 1 ) ) {
}
}
digitalWrite( 4 , LOW );
digitalWrite( 5 , HIGH );
digitalWrite( 6 , LOW );
}
if (( zeit2 == 3 )) {digitalWrite( 5 , LOW );
digitalWrite( 6 , HIGH );
digitalWrite( 7 , LOW );
Unterprogramm1();
Unterprogramm2();
}
if (( zeit2 == 4 )) {digitalWrite( 6 , LOW );
digitalWrite( 7 , HIGH );
digitalWrite( 8 , LOW );
Unterprogramm1();
Unterprogramm2();
}
if (( zeit2 == 5 )) {digitalWrite( 7 , LOW );
digitalWrite( 8 , HIGH );
digitalWrite( 9 , LOW );
Unterprogramm1();
Unterprogramm2();
}
if (( zeit2 == 6 )) {digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
digitalWrite( 10 , LOW );
Unterprogramm1();
Unterprogramm2();
}
if (( zeit2 == 7 )) {digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
digitalWrite( 11 , LOW );
Unterprogramm1();
Unterprogramm2();
}
if (( zeit2 == 8 )) {if (( ( spieler2 == false ) && ( richtung == false ) )) {while ( ( 1 == 1 ) ) {
}
}
digitalWrite( 10 , LOW );
digitalWrite( 11 , HIGH );
digitalWrite( 12 , LOW );
}
if (( zeit2 == 9 )) {digitalWrite( 11 , LOW );
digitalWrite( 12 , HIGH );
if (digitalRead(3)) {spieler2 = true;
}
richtung = false;
spieler1 = false;
}
}
if (( richtung == true )) {zeit2 = ( zeit2 + 1 );
}
if (( richtung == false )) {zeit2 = ( zeit2 - 1 );
}
zeit4 = ( zeit4 + 1 );
if (( zeit4 == 5 )) {zeit4 = 0;
if (( zeit3 > 300 )) {zeit3 = ( zeit3 - 5 );
}
else {
zeit3 = ( zeit3 - 1 );
}
}
}//Spieler1
void Unterprogramm1() {
if (digitalRead(2)) {digitalWrite( 4 , HIGH );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
digitalWrite( 8 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
digitalWrite( 11 , LOW );
digitalWrite( 12 , LOW );
while ( ( 1 == 1 ) ) {
}
}
}//Spieler 2
void Unterprogramm2() {
if (digitalRead(3)) {digitalWrite( 4 , LOW );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
digitalWrite( 8 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
digitalWrite( 11 , LOW );
digitalWrite( 12 , HIGH );
while ( ( 1 == 1 ) ) {
}
}
}
Quizz Buzzer
Wer zuerst auf den Taster drückt dessen LED leuchtet und der andere hat keine Chance mehr. So ist immer klar wer zuerst gedrückt hat. Nun muss der Spieler dessen LED leuchtet aber auch die Frage beantworten, ein herausreden gibt es nicht mehr. Video vom Spiel: https://www.youtube.com/watch?v=BP0jm5Jrxr4
Arduino Code
bool sieg = false;void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
sieg = false;analogWrite(10 , 180);analogWrite(11 , 180);}void loop() {
if (!( digitalRead(2) )) {analogWrite(11 , 0);
sieg = true;
while ( ( sieg == true ) ) {
if (!( digitalRead(4) )) {sieg = false;
delay( 1000 );
analogWrite(10 , 180);
analogWrite(11 , 180);
}
}
}
if (!( digitalRead(3) )) {analogWrite(10 , 0);
sieg = true;
while ( ( sieg == true ) ) {
if (!( digitalRead(4) )) {sieg = false;
delay( 1000 );
analogWrite(10 , 180);
analogWrite(11 , 180);
}
}
}
}