Beim LED-Rennen treten zwei Spieler gegeneinander an. Jeder steuert einen eigenen Lichtpunkt, der über eine Reihe von LEDs läuft. Mit jedem Tastendruck rückt die LED des Spielers ein Stück weiter Richtung Ziel. Wer seine LED zuerst bis ans Ende der Reihe bringt, gewinnt das Rennen!
Spiel 11 aus der 200 Arduino Spiele Sammlung.
Die Schaltung besteht nur aus einem Arduino, zwei Tastern und einer 255 LED Matrix.
Zum testen haben ich ddie beiden Taster auf ein mini Breadbord auf den Arduino gesteckt.
Hier noch der Arduino Code:
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel strip_pin9 = Adafruit_NeoPixel(300,9, NEO_GRB + NEO_KHZ800);
byte spiel = 0;
void Unterprogramm2();
byte spieler_2 = 1;
byte spieler_22 = 0;
byte spieler_222 = 0;
void Unterprogramm1();
byte spieler_1 = 1;
byte spieler_11 = 0;
byte spieler_111 = 0;
void Unterprogramm();
void setup() {
strip_pin9.begin();
strip_pin9.show();
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
strip_pin9.setBrightness(10);
Unterprogramm();
}
void loop() {
if (( spiel == 0 )) {
Unterprogramm1();
Unterprogramm2();
}
if (( ( spieler_111 >= 255 ) && ( spiel == 0 ) )) {
for (int i = 0; i < 260; i++) {
strip_pin9.setPixelColor(spiel,0 ,255 ,0 );
spiel = ( spiel + 1 );
}
strip_pin9.show();
spiel = 1;
delay( 1000 );
}
if (( ( spieler_222 <= 0 ) && ( spiel == 0 ) )) {
for (int i = 0; i < 260; i++) {
strip_pin9.setPixelColor(spiel,0 ,0 ,255 );
spiel = ( spiel + 1 );
}
strip_pin9.show();
spiel = 1;
delay( 1000 );
}
if (( ( spiel == 1 ) && ( !( digitalRead(2) ) && !( digitalRead(3) ) ) )) {
spiel = 0;
for (int i = 0; i < 260; i++) {
strip_pin9.setPixelColor(spiel,0 ,0 ,0 );
spiel = ( spiel + 1 );
}
strip_pin9.show();
Unterprogramm();
}
}
//spieler 2
void Unterprogramm2() {
if (!( digitalRead(3) )) {
spieler_2 = 1;
spieler_22 = 0;
}
if (( spieler_2 == 1 )) {
spieler_22 = ( spieler_22 + 1 );
}
if (( spieler_22 == 15 )) {
spieler_2 = 0;
spieler_22 = 0;
spieler_222 = ( spieler_222 - 1 );
strip_pin9.setPixelColor(spieler_222,0 ,0 ,255 );
strip_pin9.show();
}
}
//spieler 1
void Unterprogramm1() {
if (!( digitalRead(2) )) {
spieler_1 = 1;
spieler_11 = 0;
}
if (( spieler_1 == 1 )) {
spieler_11 = ( spieler_11 + 1 );
}
if (( spieler_11 == 15 )) {
spieler_1 = 0;
spieler_11 = 0;
spieler_111 = ( spieler_111 + 1 );
strip_pin9.setPixelColor(spieler_111,0 ,255 ,0 );
strip_pin9.show();
}
}
//start und rest
void Unterprogramm() {
spieler_1 = 0;
spieler_11 = 0;
spieler_111 = 0;
spieler_2 = 0;
spieler_22 = 0;
spieler_222 = 255;
spiel = 0;
strip_pin9.setPixelColor(spieler_111,0 ,50 ,0 );
strip_pin9.setPixelColor(spieler_222,0 ,0 ,50 );
strip_pin9.show();
}