LED-Matrix - Lauflicht

Lese­zeit: 5 Minu­ten

Lösung
Seite als PDF

Die LED-Matrix soll ein Lauf­licht anzeigen.

So sieht es aus:

Die ein­zel­nen LEDs wer­den in Rei­hen und Spal­ten ange­spro­chen.
Die Schreib­wei­se für jede Rei­he kann binär ange­ge­ben wer­den: 0 = aus, 1 = an. Den Wer­ten wird ein "B" vor­an­ge­stellt.
Die LED-Matrix wur­de in das Steck­brett ein­ge­setzt, daher ver­lau­fen die Rei­hen ver­ti­kal und die Spal­ten horizontal.

Bei­spie­le:

void PfeilUnten()
{
  // Array für die 8 Reihen 
  byte Zeichen[8] = 
  {
    B00010000,  // 1. Reihe
    B00110000,  // 2. Reihe
    B01111111,  // 3. Reihe
    B11111111,  // 4. Reihe
    B01111111,  // 5. Reihe
    B00110000,  // 6. Reihe
    B00010000,  // 7. Reihe
    B00000000   // 8. Reihe
  };

  // Matrix anzeigen
  for (int i = 0; i < 8; i ++)   
  { 
    LEDMatrix.setRow(0, i, Zeichen[i]);   
  }
} 
void Kreuz()
{
  byte Zeichen[8] = 
  {
    B10000001, // 1. Reihe
    B01000010, // 2. Reihe
    B00100100, // 3. Reihe
    B00011000, // 4. Reihe 
    B00011000, // 5. Reihe 
    B00100100, // 6. Reihe
    B01000010, // 7. Reihe
    B10000001  // 8. Reihe  
  };

  // Matrix anzeigen
  for (int i = 0; i < 8; i ++)  
  { 
    LEDMatrix.setRow(0, i, Zeichen[i]);
  }
}

Array

Schlie­ße die LED-Matrix an.

Pin­be­le­gung LED-Matrix

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Als Ers­tes musst du eine Biblio­thek installieren:

Jedem Befehl muss der Name der Matrix mit abschlie­ßen­dem . vor­an­ge­stellt werden.

Funk­tio­nen der Biblio­thek LEDControl

Schlüs­sel­wortAkti­on
Led­Con­trol Name_der_Matrix(Data-In, CLK, CS, AnzahlMatrix)LED-Matrix initia­li­sie­ren:
Led­Con­trol LED­Ma­trix = LedControl(12, 11, 10, 1); 
shutDown(NummerMatrix, true/false)Matrix auf­we­cken:
shutDown(0, false);
setIntensity(NummerMatrix, Hel­lig­keit)Hel­lig­keit set­zen (0−20)
setIntensity(0, 8);
clearDisplay(NummerMatrix)clearDisplay(0);
setLed(NummerMatrix, Zei­le, Spal­te, true/false);ein­zel­ne LED schalten
setLed(0, 0, 0, true);
setRow(NummerMatrix, Zei­le, Byte)zei­len­wei­se ein Byte schreiben:
setRow(0, Zei­le, B10000000);
setRow kann Wer­te zwi­schen 0 und 7 haben

Wenn die LED-Matrix in das Steck­brett gesetzt wird, ver­lau­fen die Rei­hen vertikal.
setColumn(NummerMatrix, Spal­te, Byte)spal­ten­wei­se ein Byte schreiben:
setColumn(0, Spal­te, B10000000);
set­Co­lumn kann Wer­te zwi­schen 0 und 7 haben

Wenn die LED-Matrix in das Steck­brett gesetzt wird, ver­lau­fen die Spal­ten horizontal.

Im Kopf des Pro­gramms musst du die Biblio­thek ein­bin­den und die Pin­be­le­gung der LED-Matrix festlegen:

# include "LedControl.h" 
/* 
  VCC →  5V    
  GND    
  Pin 12 ->  DATA IN Pin   
  Pin 10 ->  CLK Pin  
  Pin 11 ->  CS Pin 
  1 -> eine Matrix angeschlossen
*/ 
LedControl LEDMatrix = LedControl(12, 11, 10, 1);
Download

Ver­än­de­re das Bei­spiel so, dass in jeder Zei­le die LEDs nach­ein­an­der leuchten.

Die LED-Matrix wur­de in das Steck­brett ein­ge­setzt, daher ver­lau­fen die Rei­hen ver­ti­kal und die Spal­ten horizontal.

// Bibliothek LedControl einbinden 
# include "LedControl.h"

/*  
  Pinbelegung  
  VCC →  5V  
  GND  
  Pin 12 ->  DATA IN Pin  
  Pin 10 ->  CLK Pin  
  Pin 11 ->  CS Pin 
  1 -> eine Matrix angeschlossen
*/ 
LedControl LEDMatrix = LedControl(12, 11, 10, 1); 

void setup()  
{   
  // Matrix "aufwecken" 
  LEDMatrix.shutdown(0, false);

  //  mittlere Helligkeit setzen 
  LEDMatrix.setIntensity(0, 8); 
} 

void loop()  
{  
  /*     
    setRow/setColumn erwartet drei Parameter:  
    - die Addresse der LED-Matrix →  0  
    - die Angabe der Zeile 
    - den Wert der LED 1 = an, 0 = aus  
  */ 
  // spaltenweise 
  for (int i = 0; i < 7; i ++)   
  {   
    // alle an   
    LEDMatrix.setColumn(0, i, B11111111);  
    delay(100);   

    // alle aus 
    LEDMatrix.setColumn(0, i, B00000000);   
    delay(100);  
  } 

  // und zurück 
  for (int i = 7; i >= 0; i--)   
  { 
    // alle an  
    LEDMatrix.setColumn(0, i, B11111111);  
    delay(100); 

    // alle aus  
    LEDMatrix.setColumn(0, i, B00000000);  
    delay(100); 
  }  

  // zeilenweise  
  for (int i = 0; i < 7; i ++)  
  {  
    // alle an
    LEDMatrix.setRow(0, i, B11111111); 
    delay(100);   

    // alle aus  
    LEDMatrix.setRow(0, i, B00000000);    
    delay(100);   
  } 

  // und zurück  
  for (int i = 7; i >= 0; i--)   
  { 
    // alle an 
    LEDMatrix.setRow(0, i, B11111111);  
    delay(100);   

    // alle aus   
    LEDMatrix.setRow(0, i, B00000000); 
    delay(100); 
  } 
}

Für die Erstel­lung von Matrixen kannst du einen 🔗Edi­tor (exter­ner Link abge­ru­fen am 19.12.23) verwenden.


Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 2. Jan 2024 @ 23:38