Posts Tagged ‘Programm’

Und wieder blinkt es

Donnerstag, Juni 24th, 2010

In den Hüpfplatten sind LEDs vebaut. Damit diese ihren Job auch aufnehmen können, wurde heute der Code, für die LED-Steuerung geschrieben. Es soll immer die Platte leuchten, auf die der Nutzer als nächstes treten muss. Dies ist, so hat sich in ersten Tests gezeigt, sehr hilfreich und macht zudem Spaß. Hier nun der Code, der dies ermöglicht:

if (benoetigteTaste == 2 ){
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPinx, LOW);
}

Verwendet werden die Variablen, die auch schon zum Überprüfen der richtigen Reihenfolge verwendet werden und so war der Code sehr schnell erstellt. Für jede LED ist ein solcher Code-Block angelegt.

Der große Schritt…

Sonntag, Juni 6th, 2010

Ziemlich lange wurde die Programmierung des Hopscotsch Spieles nun hinausgezögert. Doch an diesem Wochenende war es so weit, die Aufgabe wurde angepackt. In erstaunlich kurzer Zeit kam so ein Programm zustande, dass prüft, ob der Spieler die Platten des Spiels in der richtigen Reihenfolge betätigt. Einzig Feedback per LEDs etc. ist noch nicht programmiert, da der parallel zur Programmierung erfolgte Bau des Spielfeldes doch etwas langsamer voran ging als erwartet und erst die Fertigstellung der Platten erfolgen soll.

In einem mehrdimensionalen Array ist die richtige Reihenfolge der Tasten gespeichert . Hier ein Ausschnitt aus dem Code:

int ablauf [6][8] = {
{1,1, 0, 0, 0, 0, 0, 0}, // aktueller Status… aktuelle Runde, aktuelle Position!
{1,3, 4, 5, 6, 5, 4, 3}, // runde 1, usw….   erste zahl rundennr, dann zu betaetigende tasten in richtiger reihenfolge
{2,2, 4, 5, 6, 5, 4, 2},
{3,2, 3, 5, 6, 5, 3, 2},
{4,2, 3, 4, 6, 4, 3, 2},
{5,2, 3, 4, 5, 4, 3, 2}

};

Ob die jeweils betätigte Taste korrekt ist, wird, wie hier für Taste zwei, wie folgt geprüft:

if (val2 == LOW && val2 != oldVal2){
Serial.println(“zwei_1″);

int gedrueckteTaste = 2;

int runde = ablauf [0][0];
int aktuelleTaste = ablauf [0][1];

int benoetigteTaste = ablauf [runde][aktuelleTaste];

Serial.println(“es muss gedrueckt werden:”);
Serial.println(benoetigteTaste);

if(benoetigteTaste == gedrueckteTaste){
if(aktuelleTaste == 7 && runde == 5){

Serial.println(“Gewonnen! Gewonnen! Gewonnen!”);

ablauf[0][0] == 1;
ablauf[0][1] == 1;
}
else if(aktuelleTaste == 7){
ablauf[0][0]++;
ablauf [0][1] = 1;
Serial.println(“naechste Runde!”);
Serial.println(ablauf[0][0]);
}
else{
ablauf[0][1]++;
Serial.println(“naechste Taste”);
}
}
else{
ablauf[0][0] == 1;
ablauf[0][1] == 1;
Serial.println(“falsche Taste! – Neustart”);
}
}