Hallo Arduino community,
ich benötige Hilfe bei einem Arduino sketch. Es geht um die Simulation eines
Würfelspiels mit dem Arduino Uno. 7 LEDs sind wie die Augen eines richtigen Würfels
angeordnet und an die Pins 2 - 8 des Arduino (Uno) angeschlossen. Bei Tasterbetätigung
wird die Routine showdice aufgerufen, an die auch eine vorher generierte Zufallszahl
gegeben wird.
#define WAIT 20 // pause 20ms
int eyes[6][7] = {{0, 0, 0, 1, 0, 0, 0}, // Würfelaugen zeigen "1"
{1, 0, 0, 0, 0, 0, 1}, // Würfelaugen zeigen "2"
{1, 0, 0, 1, 0, 0, 1}, // Würfelaugen zeigen "3"
{1, 0, 1, 0, 1, 0, 1}, // Würfelaugen zeigen "4"
{1, 0, 1, 1, 1, 0, 1}, // Würfelaugen zeigen "5"
{1, 1, 1, 0, 1, 1, 1}}; // Würfelaugen zeigen "6"
int pin[] = {2, 3, 4, 5, 6, 7, 8}; // pin array
int pinOffset = 2; // erste LED an pin 2
int buttonPin = 13; // Taster an pin 13
void setup() { // alle pins
for(int i = 0; i < 7; i++) // des array "pin"
pinMode(pin[i], OUTPUT); // als OUTPUT pins
pinMode(buttonPin, INPUT);
}
void loop() {
if(digitalRead(buttonPin) == HIGH) // Taster prüfen: wenn gedrückt
showdice(random(1, 7)); // Zufallszahl zwischen 1 - 7 generieren
}
void showdice(int wert) { // showdice aufrufen, 7 mal in dieser loop
for(int i = 0; i < 7; i++)
digitalWrite(i + pinOffset, (eyes[wert - 1][i] == 1)?HIGH:LOW); // WAS PASSIERT HIER GENAU ???
delay(WAIT); // kurze Pause
}
Einen Teil des sketchs verstehe ich (2 dimensionales array für die Würfelaugen usw.),
aber die Zeile in der showdice routine mit dem digitalwrite
- digitalWrite(i + pinOffset, (eyes[value - 1] == 1)?HIGH:LOW); -
kapiere ich einfach nicht.
Ausserdem möchte ich dass die LEDs rotieren ca. 3 Sekunden nach Tasterbetätigung
und nicht etwa so lange wie dieser gedrückt gehalten wird. Wie kann man das
implementieren ?
Falls jemand mir erklären kann wie die o.g Schleife genau funktioniert bzw.
der Ausdruck mit dem digitalWrite, wäre das sehr nett.
Danke und viele Grüße,
Fliffi