kk logo

Das Spielprinzip ist klar. Es gibt eine Frage und wer zuerst auf seinen Buzzer drückt, dessen Farbe leuchtet, egal wie oft der andere auch noch drückt. So muss bei Spielen nicht lange diskutiert werden, wer sich zuerst gemeldet hat, sondern die Farbe die leuchtet, der Spieler war schneller. 

Arduino Projekt. Spiele Buzzer mit Neo Pixel Streifen 1

Durch die umlaufenden Neopixel (bzw.: einer dieser Chips, WS2812B WS2811 WS2813 WS2815) sieht das ganze auch noch sehr gut aus. 

Arduino Projekt. Spiele Buzzer mit Neo Pixel Streifen 2

Durch die Spannungsversorgung mit USB Kabel und 5 Volt, kann das Spiel auch über eine Powerbank versorgt werden. 

Arduino Projekt. Spiele Buzzer mit Neo Pixel Streifen 3

Für die LED und die Buzzer werden keine Wiederstände benötigt, da die LED über PWM und die Buzzer über die internen PullUp Wiederstände angeschlossen sind.

Arduino Projekt. Spiele Buzzer mit Neo Pixel Streifen 4

Da ich sehr viel GND Potenzial habe, ist dafür eine Wago Klemme direkt auf das Holz geklebt. 

Arduino Projekt. Spiele Buzzer mit Neo Pixel Streifen 5

Die Grobhandtaster waren rel. günstig von Ali. bin mal gespannt wie lange die halten. Dafür gefallen mir die Füße aus getrocknetem Haselnuss extrem gut. 

Hier noch der Arduino Code für das Spiel:

 

#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel strip_pin11 = Adafruit_NeoPixel(60,11, NEO_GRB + NEO_KHZ800);
bool richtung = true;
byte zustand = 0;
int led1 = 9;
int led2 = 50;
int timer = 0;
long ZeitVariable = 0L;
int led = 59;
void Unterprogramm2();

void Unterprogramm1();

void setup() {
strip_pin11.begin();
strip_pin11.show();
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
analogWrite(5 , 0);

analogWrite(6 , 0);

richtung = true;

zustand = 0;

led1 = 9;

led2 = 50;

timer = 0;

Unterprogramm2();

}

void loop() {
ZeitVariable = millis();
while(ZeitVariable + 50L >= millis()) {
if (!( digitalRead(2) )) {

analogWrite(6 , 70);
zustand = 1;
led = 59;
for (int i = 0; i < 60; i++) {
strip_pin11.setPixelColor(led,30 ,0 ,0 );
strip_pin11.show();
led = ( led - 1 );
delay( 20 );
}
while ( ( zustand == 1 ) ) {
Unterprogramm1();
}
Unterprogramm2();
}
if (!( digitalRead(3) )) {

analogWrite(5 , 70);
zustand = 2;
led = 0;
for (int i = 0; i < 60; i++) {
strip_pin11.setPixelColor(led,0 ,0 ,30 );
strip_pin11.show();
led = ( led + 1 );
delay( 20 );
}
while ( ( zustand == 2 ) ) {
Unterprogramm1();
}
Unterprogramm2();
}
analogWrite(5 , 0);
analogWrite(6 , 0);
}
if (( zustand == 0 )) {

if (( led1 <= 8 )) {

richtung = true;
}
if (( led1 >= 30 )) {

richtung = false;
}
if (( richtung == true )) {

strip_pin11.setPixelColor(led1,30 ,0 ,0 );
strip_pin11.show();
led1 = ( led1 + 1 );
strip_pin11.setPixelColor(led2,0 ,0 ,30 );
strip_pin11.show();
led2 = ( led2 - 1 );
}
if (( richtung == false )) {

strip_pin11.setPixelColor(led1,0 ,0 ,30 );
strip_pin11.show();
led1 = ( led1 - 1 );
strip_pin11.setPixelColor(led2,30 ,0 ,0 );
strip_pin11.show();
led2 = ( led2 + 1 );
}
}
}

//Funktionsbeschreibung
void Unterprogramm2() {
led = 0;
for (int i = 0; i < 9; i++) {
strip_pin11.setPixelColor(led,0 ,0 ,30 );
strip_pin11.show();
led = ( led + 1 );
}
led = 51;
for (int i = 0; i < 9; i++) {
strip_pin11.setPixelColor(led,30 ,0 ,0 );
strip_pin11.show();
led = ( led + 1 );
}
}

//Funktionsbeschreibung
void Unterprogramm1() {
led = 0;
if (( !( digitalRead(2) ) && !( digitalRead(3) ) )) {

while ( ( !( digitalRead(2) ) && !( digitalRead(3) ) ) ) {
delay( 10 );
timer = ( timer + 1 );
if (( timer > 100 )) {

zustand = 0;
for (int i = 0; i < 60; i++) {
strip_pin11.setPixelColor(led,0 ,30 ,0 );
strip_pin11.show();
led = ( led + 1 );
}
}
}
}
timer = 0;
led2 = 50;
led1 = 9;
delay( 700 );
}

Ronnie

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

ronnie berzins at mee

...

machen ist wie wollen nur krasser!