Dieses Spiel ist nicht neu, sondern gibt es schon in unzähligen Varianten. Eine LED leuchtet auf, dann muss der Passende Taster gedrückt werden und es gibt einen Punkt. Die Zeit und die Punkte werden auf einem LCD Display angezeigt. 

Hier gibt es noch ein YouTube Video von dem Spiel auf meinem Kanal. 

1 anfänger projekt Arduino LED Geschicklichkeitsspiel

Ich habe einen Arduino UNO, ein GROVE RGB LCD, Taster, LEDs und Widerstände verwendet, die einzelnen Bauteile stehen in dem Schaltplan. Den Kondensator habe ich eingefügt da das Display ab und zu aussetzter hatte. Nach einbau des Kondensators gab es keine Problem mehr. 

2 anfänger projekt Arduino LED Geschicklichkeitsspiel

Das Programm habe ich mit Ardublock geschrieben. Im Grund geht es im die 4 Unterprogramme.

Zeit: Hier wird die Zeit, die der Spieler zur Verfügung hat gemessen und angezeigt.

Spiel 1: Hier werden die zufälligen LEDs ausgewählt.

Spiel 2: Hier wird der passende Taster abgefragt, die Punkte gezählt und angezeigt.

Neustart: Hier wird das Spiel neu gestartet. 

Hier gibt es die Ardublock Datei ! Achtung für die Ardublock Version von duinoEDU, experimental. 

3 anfänger projekt Arduino LED Geschicklichkeitsspiel

 

Hier gibt es noch den Code für die Ardiuno IDE: 



#include <Wire.h>
#include <rgb_lcd.h>
#include <Duinoedu_Utility.h>

int punktestand = 0 ;
int zeit = 0 ;
int minuten = 0 ;
int wechsel = 0 ;
int sekunden = 0 ;
bool start= false ;
bool punkte= false ;
rgb_lcd monRgb;
void spiel1();
int a9;
int zufall = 0 ;
void neustart();
void spiel2();
void Zeit();
void reset();

void setup()
{
pinMode( 2 , INPUT);
pinMode( 3 , INPUT);
pinMode( 4 , INPUT);
pinMode( 5 , INPUT);
pinMode( 6 , INPUT);
pinMode( 7 , INPUT);
pinMode( 11 , OUTPUT);
pinMode( 12 , OUTPUT);
pinMode( 13 , OUTPUT);
pinMode( 8 , OUTPUT);
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);
monRgb.branch();
punktestand = 0 ;

zeit = 0UL ;

minuten = 0UL ;

wechsel = 0 ;

sekunden = 0UL ;

start = HIGH ;

punkte = HIGH ;

monRgb.clear();
}

void loop()
{
if (( digitalRead(2) || ( digitalRead(3) || ( digitalRead(4) || ( digitalRead(5) || ( digitalRead(6) || digitalRead(7) ) ) ) ) ))
{
punktestand = 0 ;
zeit = 0UL ;
minuten = 0UL ;
wechsel = 0 ;
sekunden = 1UL ;
start = HIGH ;
punkte = HIGH ;
monRgb.clear();
delay( 500 );
monRgb.retroeclairage(0,1000,0);
monRgb.placerCurseurEn(0,0);
monRgb.ecrire("Zeit : :" );
monRgb.placerCurseurEn(1,0);
monRgb.ecrire("Punkte:" );
monRgb.placerCurseurEn(0,13);
monRgb.ecrire(sekunden );
monRgb.placerCurseurEn(0,10);
monRgb.ecrire(minuten );
while ( ( ( start ) == ( HIGH ) ) )
{
Zeit();
spiel1();
spiel2();
neustart();
}

}
ONLY_EVERY(100,Repeat8)
wechsel = ( wechsel + 1 ) ;
END_ONLY_EVERY
if (( ( wechsel ) == ( 10 ) ))
{
monRgb.clear();
monRgb.retroeclairage(0,1000,0);
monRgb.placerCurseurEn(0,0);
monRgb.ecrire("---- spiel----" );
}
if (( ( wechsel ) == ( 20 ) ))
{
monRgb.retroeclairage(1000,0,0);
monRgb.placerCurseurEn(0,0);
monRgb.ecrire("-- spiel mit --" );
}
if (( ( wechsel ) == ( 30 ) ))
{
monRgb.clear();
monRgb.retroeclairage(0,0,1000);
monRgb.placerCurseurEn(1,0);
monRgb.ecrire("-taste drucken-" );
wechsel = 0 ;
}
}

void spiel1()
{
if (( ( punkte ) == ( HIGH ) ))
{
punkte = LOW ;
for ( a9=1; a9<= ( map ( analogRead(A0) , 50 , 250 , 1 , 20 ) ); ++a9 )
{
zufall = random( 2 , 8 ) ;
}
if (( ( zufall ) == ( 2 ) ))
{
digitalWrite(8 , HIGH);
}
if (( ( zufall ) == ( 3 ) ))
{
digitalWrite(9 , HIGH);
}
if (( ( zufall ) == ( 4 ) ))
{
digitalWrite(10 , HIGH);
}
if (( ( zufall ) == ( 5 ) ))
{
digitalWrite(11 , HIGH);
}
if (( ( zufall ) == ( 6 ) ))
{
digitalWrite(12 , HIGH);
}
if (( ( zufall ) == ( 7 ) ))
{
digitalWrite(13 , HIGH);
}
}
}

void neustart()
{
if (( ( analogRead(A2) ) > ( 500UL ) ))
{
start = LOW ;
punkte = HIGH ;
punktestand = 0 ;
zeit = 0UL ;
minuten = 0UL ;
wechsel = 0 ;
sekunden = 0UL ;
reset();
}
}

void spiel2()
{
if (( ( ( punkte ) == ( LOW ) ) && ( ( ( zufall ) == ( 2 ) ) && digitalRead(2) ) ))
{
punkte = HIGH ;
reset();
}
if (( ( ( punkte ) == ( LOW ) ) && ( ( ( zufall ) == ( 3 ) ) && digitalRead(3) ) ))
{
punkte = HIGH ;
reset();
}
if (( ( ( punkte ) == ( LOW ) ) && ( ( ( zufall ) == ( 4 ) ) && digitalRead(4) ) ))
{
punkte = HIGH ;
reset();
}
if (( ( ( punkte ) == ( LOW ) ) && ( ( ( zufall ) == ( 5 ) ) && digitalRead(5) ) ))
{
punkte = HIGH ;
reset();
}
if (( ( ( punkte ) == ( LOW ) ) && ( ( ( zufall ) == ( 6 ) ) && digitalRead(6) ) ))
{
punkte = HIGH ;
reset();
}
if (( ( ( punkte ) == ( LOW ) ) && ( ( ( zufall ) == ( 7 ) ) && digitalRead(7) ) ))
{
punkte = HIGH ;
reset();
}
}

void Zeit()
{
ONLY_EVERY(100,Repeat11)
zeit = ( zeit + 1UL ) ;
END_ONLY_EVERY
if (( ( zeit ) == ( 10UL ) ))
{
sekunden = ( sekunden + 1UL ) ;
zeit = 0UL ;
monRgb.placerCurseurEn(0,13);
monRgb.ecrire(sekunden );
}
if (( ( sekunden ) == ( 60UL ) ))
{
minuten = ( minuten + 1UL ) ;
sekunden = 0UL ;
monRgb.placerCurseurEn(0,10);
monRgb.ecrire(minuten );
}
if (( ( minuten ) == ( 2UL ) ))
{
monRgb.retroeclairage(0,0,1000);
sekunden = 00UL ;
monRgb.placerCurseurEn(0,13);
monRgb.ecrire(sekunden );
while ( ( ( minuten ) == ( 2UL ) ) )
{
if (( ( analogRead(A2) ) > ( 500UL ) ))
{
reset();
start = LOW ;
punkte = LOW ;
punktestand = 0 ;
zeit = 0UL ;
minuten = 0UL ;
wechsel = 0 ;
sekunden = 0UL ;
}
}

}
}

void reset()
{
punktestand = ( punktestand + 1 ) ;
monRgb.placerCurseurEn(1,10);
monRgb.ecrire(punktestand );
digitalWrite(8 , LOW);
digitalWrite(9 , LOW);
digitalWrite(10 , LOW);
digitalWrite(11 , LOW);
digitalWrite(12 , LOW);
digitalWrite(13 , LOW);
delay( 500 );
}

 


Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.