Hauptmenü

Welcher Taster (Buzzer) zuerst gedrückt wird, dessen Lampe leuchtet und bleibt auch an, egal wie oft die anderen noch auf ihren Buzzer drücken. Die Anzeige lügt nicht. Sie zeigt eindeutig wer schneller war :-). So gibt es keinen Streit mehr darüber, welche Gruppe/ Person sich zuerst gemeldet hat. 

Wer den Taster drückt, kann sich aber auch nicht mehr rausreden. Die Anzeige lässt sich nur vom Spielleiter zurückstellen, wer gedrückt hat muss auch antworten.

Die Schaltung dazu ist recht einfach, wie ihr auf dem Breadbord, das mit Fritzing erstellt wurde, sehen könnt. Wird einer der beiden Taster links oder rechts vom Attiny 45 gedrückt, erlischt das grüne Licht der Bi- Color LEDs und eine LED beginnt rot zu leuchten. Nun weiß man ganz genau, wer zuerst auf den Taster gedrückt hat. Über den dritten Taster beginnt das Spiel von vorne. 

An den Attiny 45 werden die beiden Bi Color LEDs angeschlossen. Die rote Farbe bekommt je einen eigenen PIN. Da ich beim Attiny nur 5 PINs habe, bekommen die grünen einen gemeinsamen PIN und gehen beim Drücken des Tasters dann auch zusammen aus. Der Reset erfolgt über den Reset PIN des Attiny 45, der so schnell reagiert, dass die beiden grünen LEDs nach dem loslassen des Reset Tasters sofort wieder leuchten. 

attiny-45-buzzer-projekt-spielleiter

Die Spannungsversorgung kommt von einer 9 Volt Block Batterie, die über einen Festspannungsregler auf konstante 5 Volt gebracht wird. 

Eine Anleitung zum programmieren der Attinys findete ihr hier auf meiner Seite.

Widerstände:

LED = 100 Ohm, Reset Taster pull down = 47 K.Ohm, Spieler Taster pull down = 1 K. Ohm.

Programm für den Spiele Buzzer:

Die beiden Taster werden permanent über den Loop abgefragt. Durch betätigen der Taster wird PIN 3 oder 4 HIGH. Dann wird PIN 2 oder 1 auf HIGH geschaltet und eine der beiden roten LEDs leuchtet, zusätzlich wird PIN 0 LOW geschaltet und die grüne geht aus. 

 

// www.kreativekiste.de

// Spielleiter Buzzer 

void setup()
{
pinMode( 3, INPUT);
pinMode( 4, INPUT);
pinMode( 0 , OUTPUT);
pinMode( 2 , OUTPUT);
pinMode( 1 , OUTPUT);
}
void loop()
{
digitalWrite( 0 , HIGH );
if (digitalRead(4))
{
digitalWrite( 2 , HIGH );
digitalWrite( 0 , LOW );
delay( 9999999 );
}
if (digitalRead(3))
{
digitalWrite( 1 , HIGH );
digitalWrite( 0 , LOW );
delay( 9999999 );
}
}

Mit diesem Code kann die Schaltung nur vom Spielleiter zurückgesetzt werden, da der LOOP über die delay Zeit für 9999999 Millisekunden angehalten wird, könnte man auch schöner schreiben, reicht aber völlig aus, und da sich die Schaltung erst nach 10000 Sekunden oder 166 Minuten zurücksetzen würde. Vor allem aber kann der so geschrieben Code ganz einfach verändert werden, sodass sich die Schaltung von selbst resetet. Wird statt der delay Zeit von 9999999, nur eine delay Zeit von 50000 eingestellt, hat die Gruppe oder Person, die gedrückt hat, nur 50 Sekunden Zeit, die Frage zu beantworten. Dann darf die andere Gruppe versuchen die Frage zu beantworten. 

Die Schaltung lässt sich mit beliebig vielen LEDs und Tastern erweitern, solange ihr genügend PINs habt oder Schieberegister verwendet. Hier noch mal die Schaltung auf einem Arduino UNO Board. Um den Code nicht noch mal neu zu schreiben, hier auch der Reset über den Reset des Arduino.  

 

arduino-buzzer-projekt-spiel

 

Hier noch ein Code, bei dem die LEDs vor der Anzeige des Ergebnisses kurz hin- und herblinken. So wird es etwas spannender.

// www.kreativekiste.de

// Buzzer für Spielleiter mit blink

int _ABVAR_1_a;

void Unterprogramm();

void setup()
{
pinMode( 3, INPUT);
pinMode( 4, INPUT);
pinMode( 0 , OUTPUT);
pinMode( 2 , OUTPUT);
pinMode( 1 , OUTPUT);
}
void loop()
{
digitalWrite( 0 , HIGH );
if (digitalRead(4))
{
Unterprogramm();
digitalWrite( 2 , HIGH );
digitalWrite( 0 , LOW );
delay( 9999999 );
}
if (digitalRead(3))
{
Unterprogramm();
digitalWrite( 1 , HIGH );
digitalWrite( 0 , LOW );
delay( 9999999 );
}
}
void Unterprogramm()
{
digitalWrite( 1 , HIGH );
digitalWrite( 2 , HIGH );
delay( 500 );
digitalWrite( 1 , LOW );
digitalWrite( 2 , LOW );
delay( 500 );
for (_ABVAR_1_a=1; _ABVAR_1_a<= ( 5 ); ++_ABVAR_1_a )
{
digitalWrite( 1 , HIGH );
delay( 150 );
digitalWrite( 1 , LOW );
delay( 150 );
digitalWrite( 2 , HIGH );
delay( 150 );
digitalWrite( 2 , LOW );
delay( 150 );
}
}

 

Wenn ein in Eagle erstellter Schaltplan lieber ist, hier ist einer. Schaltplan Buzzer für 2 Spieler.

Buzzer-mitAttiny-45-schaltung

 

 

 

Suchen