kk logo

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

 

by grace

By grace alone somehow I standWhere even angels fear to treadInvited by redeeming loveBefore the throne of God aboveHe pulls me close with nail-scarred handsInto His everlasting arms

Ronnie

schwäbischer tüftler und bastler, kraftsportler, 41 Jahre, 1 Frau, 5 Kinder und 1003 Ideen. 

ronnie berzins at mee