Hauptmenü

Ich wurde für ein Gemeindefest gefragt ob ich nicht die Schaltung der Lampen für das Spiel 1 2 oder 3 bauen könnte. Was mit einem Arduino nun keine so große Aufgabe ist zumal ich das Programm relativ einfach gehalten habe. Zu dem Spiel sage ich jetzt nicht sehr viel, denn das dürften die meisten ja kennen. Im Prinzip geht es darum dass den Kindern eine Frage gestellt wird und sie während einer bestimmten Zeit sich dann entscheiden müssen auf welche Antwort die richtige ist. Dabei blinken die Antwortmöglichkeiten mit Lampen als drei Felder auf. Die Lösung wird am Ende durch das Aufleuchten eines Feldes gezeigt. Mit einem Arduino eine Kleinigkeit die Lampen und die Taster anzusteuern. 

Es gibt zwei Versionen für das Spiel

  • In der ersten Version wird einer der drei Taster gedrückt, dann geht ein kleines Lauflicht an und zum Schluss bleibt eine LED an und die anderen geben aus. Wird Taster 1 gedrückt bleibt LED 1 zum Schluss an. Wird Taster 2 gedrückt bliebt zum Schluss LED 2 an. Wird Taster 3 gedrückt bleibt erstaunlicher weise LED 3 :-).... 
  • In der zweiten Version wird der Taster 4 (ganz links) gedrückt, das Lauflicht geht an und zum Schluss bleiben alle Lampen an. Das Programm wartet nun auf eine Weitere Eingabe der ersten drei Taster. Je nachdem welcher Taster nun gedrückt bleibt die zugehörige LED an und die anderen geben aus. Bei dieser Schaltung hat man den Vorteil, selbst zu bestimmen wann das Ergebnis angezeigt wird. Will man den Spruch aus dem Fernsehspiel sagen: "„1, 2 oder 3, letzte Chance... vorbei!“ und dann „Ob ihr wirklich richtig steht, seht ihr, wenn das Licht angeht.“ Dann kann es hilfreich sein, selbst die Lampen anzuschalten, sonst muss der Sprecher ein sehr guten Timing haben. 

Die Hardware für das Spiel 1 2 oder 3

schaltung fuer 1 2 oder 3 spiel selber bauen licht

Die Taster werden über die internen Pulldown Widerstände über GND an die PINS 2, 3, 4 und 5 angeschlossen. Die LEDs werden jeweils über einen 220 Ohm Widerstand an GND angeschlossen. Die Zuordnung der Taster und LEDs sieht so aus.

 Taster   
 PIN 2 LED PIN 8
 PIN 3 LED PIN 9
 PIN 4 LED PIN 10
 Optional   
 PIN 5  Start Version 2

 

Software für das Spiel 1 2 oder 3 (Blinkcode für die Lampen und auslesen der Taster)  

Ich habe die Software rel. einfach gehalten. Vor allem beim blinken könnte man sich verkünsteln, wobei das bestimmt auch etwas auf die Lampen ankommt die man verwendet. Ich schalte die Lampen über die Variable Zeit immer schneller und lasse dann am Ende je nach Version aus bzw an. Dabei schalte ich die Lampen nicht der reihe nach an sonder aus. So dass immer zwei Lampen an sind. Zum Schluss wiederhole ich das an und ausgehen der Lampen einfach noch 3 mal über eine "for" Schleife. Wer das Blinklicht selber gestalten möchte kann das ja über "digital ride" HIGH für an oder LOW für aus und den dazugehörigen PIN digitalWrite( 10 , HIGH ); und verschiedenen Zeiten delay (1000) auch selber machen.

Dazu das Programm zwischen den beiden Klammern durch das eigene aus und an Schalten der Lampen ersetzen. 

void Unterprogramm()
{  

}   

 

 Version 1 für das Spiel 1 2 oder 3, mit Automatikschaltung 

int zeit = 0 ;
int stehen = 0 ;
int a;

void Unterprogramm();

void setup()
{
pinMode( 3 , INPUT);
pinMode( 2 , INPUT);
pinMode( 4 , INPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
pinMode( 8 , OUTPUT);
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);

zeit = 500 ;

stehen = 0 ;

}

void loop()
{
if (!( digitalRead(2) ))
{
Unterprogramm();
digitalWrite( 8 , HIGH );
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
}
if (!( digitalRead(3) ))
{
Unterprogramm();
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
digitalWrite( 10 , LOW );
}
if (!( digitalRead(4) ))
{
Unterprogramm();
digitalWrite( 8 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
}
}

void Unterprogramm()
{
zeit = 500 ;
digitalWrite( 8 , HIGH );
digitalWrite( 9 , HIGH );
digitalWrite( 10 , HIGH );
delay( zeit );
zeit = ( zeit - 100 ) ;
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 8 , HIGH );
delay( zeit );
digitalWrite( 10 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
delay( zeit );
zeit = ( zeit - 100 ) ;
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 8 , HIGH );
delay( zeit );
digitalWrite( 10 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
delay( zeit );
zeit = ( zeit - 100 ) ;
for (a=1; a<= ( 4 ); ++a )
{
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 8 , HIGH );
delay( zeit );
digitalWrite( 10 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
delay( zeit );
}
zeit = ( zeit - 100 ) ;
for (a=1; a<= ( 3 ); ++a )
{
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 8 , HIGH );
delay( zeit );
digitalWrite( 10 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
delay( zeit );
}
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 8 , HIGH );
delay( zeit );
}

 

 

Version 2 für das Spiel 1 2 oder 3, mit Handschaltung 

int zeit = 0 ;
int stehen = 0 ;
int a;

void Unterprogramm();

void setup()
{
pinMode( 3 , INPUT);
pinMode( 2 , INPUT);
pinMode( 5 , INPUT);
pinMode( 4 , INPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
pinMode( 8 , OUTPUT);
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);

zeit = 500 ;

stehen = 0 ;

}

void loop()
{
if (( ( ( stehen ) == ( 0 ) ) && !( digitalRead(5) ) ))
{
Unterprogramm();
stehen = 1 ;
}
if (( ( ( stehen ) == ( 1 ) ) && !( digitalRead(2) ) ))
{
digitalWrite( 8 , HIGH );
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
stehen = 0 ;
}
if (( ( ( stehen ) == ( 1 ) ) && !( digitalRead(3) ) ))
{
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
digitalWrite( 10 , LOW );
stehen = 0 ;
}
if (( ( ( stehen ) == ( 1 ) ) && !( digitalRead(4) ) ))
{
digitalWrite( 8 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
stehen = 0 ;
}
}

void Unterprogramm()
{
zeit = 500 ;
digitalWrite( 8 , HIGH );
digitalWrite( 9 , HIGH );
digitalWrite( 10 , HIGH );
delay( zeit );
zeit = ( zeit - 100 ) ;
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 8 , HIGH );
delay( zeit );
digitalWrite( 10 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
delay( zeit );
zeit = ( zeit - 100 ) ;
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 8 , HIGH );
delay( zeit );
digitalWrite( 10 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
delay( zeit );
zeit = ( zeit - 100 ) ;
for (a=1; a<= ( 4 ); ++a )
{
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 8 , HIGH );
delay( zeit );
digitalWrite( 10 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
delay( zeit );
}
zeit = ( zeit - 100 ) ;
for (a=1; a<= ( 3 ); ++a )
{
digitalWrite( 8 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 8 , HIGH );
delay( zeit );
digitalWrite( 10 , LOW );
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 9 , LOW );
digitalWrite( 10 , HIGH );
delay( zeit );
}
digitalWrite( 9 , HIGH );
delay( zeit );
digitalWrite( 8 , HIGH );
delay( zeit );
}

 

Suchen