// Arduino-Code für einen elektronischen Würfel mit LEDs
// Definiert die GPIO-Pins, an die die LEDs angeschlossen sind.
// Diese Pins steuern die LEDs.
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8};
// Diese Zeile berechnet die Anzahl der Elemente im Array ledPins und speichert sie in der Konstanten numLEDs.
const int numLEDs = sizeof(ledPins) / sizeof(ledPins[0]); // Berechnet die Anzahl der LEDs.
// Definiert LED-Muster für jede Würfelzahl, entsprechend einem echten Würfel.
// -1 bedeutet, dass die LED für diese Position ausgeschaltet bleibt.
const int dicePatterns[6][numLEDs] = {
{-1, -1, -1, 1, -1, -1, -1}, // Zahl 1: Einzelne LED in der Mitte
{1, -1, -1, -1, -1, -1, 1}, // Zahl 2: LEDs in entgegengesetzten Ecken
{1, -1, -1, 1, -1, -1, 1}, // Zahl 3: Kombination von 2 und 1
{1, 1, -1, -1, -1, 1, 1}, // Zahl 4: Vier LEDs in jeder Ecke
{1, 1, -1, 1, -1, 1, 1}, // Zahl 5: Kombination von 4 und 1
{1, 1, 1, -1, 1, 1, 1} // Zahl 6: Zwei zusätzliche LEDs in der Mitte der oberen und unteren Reihe
};
// Funktion zum Ausschalten aller LEDs.
void turnOffAllLEDs() {
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], LOW); // Setzt jeden Pin auf LOW, was die LEDs ausschaltet.
}
}
// Funktion zum Anzeigen des Würfelwerts durch Beleuchtung spezifischer LEDs.
void displayDiceValue(int value) {
turnOffAllLEDs(); // Schaltet zuerst alle LEDs aus.
// Durchläuft das Array und schaltet die entsprechenden LEDs ein.
for (int i = 0; i < numLEDs; i++) {
if (dicePatterns[value - 1][i] != -1) {
digitalWrite(ledPins[i], HIGH); // Schaltet die LED ein, wenn sie im Muster enthalten ist.
}
}
Serial.print("Gewürfelte Zahl: ");
Serial.println(value); // Gibt die gewürfelte Zahl auf dem seriellen Monitor aus.
}
// Setup-Funktion, die beim Start des Arduino einmal ausgeführt wird.
void setup() {
for (int i = 0; i < numLEDs; i++) {
pinMode(ledPins[i], OUTPUT); // Konfiguriert jeden LED-Pin als Ausgang.
}
randomSeed(analogRead(0)); // Initialisiert den Zufallsgenerator.
Serial.begin(9600); // Startet die serielle Kommunikation.
}
// Hauptfunktion, die in einer Endlosschleife ausgeführt wird.
void loop() {
int diceValue = random(1, 7); // Generiert eine zufällige Zahl zwischen 1 und 6.
displayDiceValue(diceValue); // Zeigt den Würfelwert an.
delay(1000); // Wartet eine Sekunde (1000 Millisekunden) zwischen den Würfen.
}