Wür­feln mit der LED-Matrix UNO R4 WiFi

Lese­zeit: 9 Minu­ten

Lösung
Seite als PDF

Der UNO R4 WiFi ver­fügt über eine 8×12 gro­ße LED-Matrix auf dem Board. Ein Tas­ter star­tet den Wür­fel­vor­gang und die LED-Matrix zeigt die Augen­zahl an. Zusätz­lich wird das Wür­feln durch eine Fol­ge von gewür­fel­ten Zah­len simuliert.

So sieht es aus:

Vor­be­rei­tun­gen

Zunächst musst du über den Board­ver­wal­ter das Board installieren:

Wenn das Board ange­schlos­sen ist, kann der USB-Anschluss aus­ge­wählt wer­den. Der Name des Anschlus­ses unter­schie­det sich je nach ver­wen­de­ten Betriebssystem.

Win­dows
Linux

Wei­te­re Informationen

Die LED-Matrix kann als zwei­di­men­sio­na­les Array defi­niert wer­den. Die­se Schreib­wei­se hat den Vor­teil, dass der Auf­bau der Matrix sicht­bar wird und eine Ände­rung schnell mög­lich ist.

Bei­spie­le:

byte PfeilRechts[8][12] = 
{
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 
  { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 },
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }
};
byte PfeilLinks[8][12] = 
{
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 
  { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }
};

Benö­tig­te Bauteile:

  • Tas­ter
  • Lei­tungs­dräh­te

Ver­bin­de den einen Pin des Tas­ters mit GND und den ande­ren mit dem digi­ta­len Pin 7.

Bin­de die benö­tig­te Biblio­thek ein und defi­nie­re die Variablen.

#include "Arduino_LED_Matrix.h"

int TASTER = 7;

/*
  Minimum und Maximum der Zufallszahlen
  ermittelde Zahl wird immer nach unten gerundet
  -> maximaler Wert muss 7 sein
*/
int Minimum = 1;
int Maximum = 7;

// Name der Matrix
ArduinoLEDMatrix Matrix;

// Start-Button 
byte StartButton[8][12] = 
{
  { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 },
  { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 },
  { 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0 },
  { 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0 },
  { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 },
  { 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 }
};

byte eins[8][12] = 
{
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};

byte zwei[8][12] = 
{
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
byte drei[8][12] = 
{
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};

byte vier[8][12] = 
{
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }
};

byte fuenf[8][12] = 
{
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
  { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }
};

byte sechs[8][12] = {
  { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1 },
  { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1 },
  { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1 }
};

Der set­up-Teil. Beach­te die Kommentare.

void setup() 
{
  Matrix.begin();

  // Zufallsgenerator starten
  randomSeed(A0);

  pinMode(TASTER, INPUT_PULLUP);

  // Start-Button anzeigen
  Matrix.renderBitmap(StartButton, 8, 12);
}

Im loop-Teil wird die Funk­ti­on Wuer­feln() aufgerufen:

void Wuerfeln() 
{
  // Zufallszahl ermitteln
  int Zahl = random(Minimum, Maximum);

  // Abfrage der gewürfelten Zahl
  switch (Zahl) 
  {
    case 1:
      Matrix.renderBitmap(eins, 8, 12);
      break;

    case 2:
      Matrix.renderBitmap(zwei, 8, 12);
      break;

    case 3:
      Matrix.renderBitmap(drei, 8, 12);
      break;

    case 4:
      Matrix.renderBitmap(vier, 8, 12);
      break;

    case 5:
      Matrix.renderBitmap(vier, 8, 12);
      break;

    case 6:
      Matrix.renderBitmap(sechs, 8, 12);
      break;
  }
}

Der loop-Teil. Beach­te die Kommentare.

void loop() 
{
  // Zustand des Tasters lesen
  int TasterLesen = digitalRead(TASTER);
  if (TasterLesen == LOW) 
  {
    delay(200);
    // Würfeleffekt
    for (int i = 0; i < 5; i++) 
    {
      Wuerfeln();
      delay(200);
    }
  }
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Letzte Aktualisierung: 4. Okt 2023 @ 10:13