Kategorie: Arduino
Zugriffe: 18446

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

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  LED PIN
 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.

Hier gibt es die ZIP Datein mit den beiden .INO Datein für Arduino, die beiden ABP. Datein für Ardublock und der Fritzing Datei für das Steckbrett.

 

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 );
}