LED Matrix 8x8x4 mit LedControl.h

Hi all,

Ich bin grade dabei für einen Bekannten eine Anzeige zu progrmamieren damit er quasi einen Counter für zum beispiel Tischtennis oder Kicker hat. Wenn auf einen Button gedrückt wird soll die Zahl nach oben gezählt und auf der Anzeige ausgegeben werden. Zum einsatz kommen vier 8x8 Led Matrixen wleche es bei amazon für ~11€ gibt.

Nun hab ich mir die LedControl.h bibliothek implementiert und aus der beispieldatei die für die zeichenerstellung nötigen befehlen rausgelesen und die Zahlen von 0 bis 9 in jeweils einem bytearray gespeichert. Nun würde ich diese Arrays gerne nicht mit jeweils einer write funktion ausgeben sondern die bytes als constante variablen speichern und je nach dem was ein interner Zähler für werte hat, diese Arrays an die Ausgabefunktion übergeben. Ich kriegs irgendwie nie in kopf wie ich variablen an funktionen übergebe und wie ich Typen convertiere.

Der unten gezeigte code ist nur die Rohfassung zur testweisen ausgabe eines Zeichens auf die Matrix. Die funktion mit dem Button und dem internen Zähler würde ich erst programmieren wenn die ausgabe funktioniert.

//We always have to include the library
#include "LedControl.h"

/*
 Now we need a LedControl to work with.
 ***** These pin numbers will probably not work with your hardware *****
 pin 12 is connected to the DataIn 
 pin 11 is connected to the CLK 
 pin 10 is connected to LOAD 
 We have only a single MAX72XX.
 */
LedControl lc=LedControl(12,11,10,4);

/* we always wait a bit between updates of the display */
unsigned long delaytime=100;

void setup() {
  /*
   The MAX72XX is in power-saving mode on startup,
   we have to do a wakeup call
   */
  lc.shutdown(0,false);
  /* Set the brightness to a medium values */
  lc.setIntensity(0,8);
  /* and clear the display */
  lc.clearDisplay(0);
  lc.clearDisplay(1);
  lc.clearDisplay(2);
  lc.clearDisplay(3);



byte neun [8] = 
{ B00000000,
  B00011000,
  B00100100,
  B00100100,
  B00011000,
  B00100100,
  B00100100,
  B00011000}; 
}


void Ausgabe ([color=red]wie übergebe ich hier das bytearray?[/color])
{
lc.setRow(0,0,neun[0]);
lc.setRow(0,1,neun[1]);
lc.setRow(0,2,neun[2]);
lc.setRow(0,3,neun[3]);
lc.setRow(0,4,neun[4]);
lc.setRow(0,5,neun[5]);
lc.setRow(0,6,neun[6]);
lc.setRow(0,7,neun[7]);

   delay(2000); 
}

void loop()
{
Ausgabe ([color=red]übergabe des byte array?[/color])
}

Hoffe ihr könnt mir helfen oder auch alternativen geben wo schon ASCII komplett konvertiert ist, es ist recht müselig die Zeichen einzelnd Reihe für Reihe ab zu tippen.

treeshort: Hoffe ihr könnt mir helfen oder auch alternativen geben wo schon ASCII komplett konvertiert ist, es ist recht müselig die Zeichen einzelnd Reihe für Reihe ab zu tippen.

Ich habe mich an Tutorial – Arduino and the MAX7219 LED Display Driver IC orientiert. Da sind auch Fontdefnitionen dabei.

Oder alternativ Programmbibliothek: http://code.google.com/p/arudino-maxmatrix-library/ Font: https://github.com/Gefrierbrand/MaxMatrix2

Damit willkommen im Forum :)

ich verwende diese library:

#include <MD_MAX72xx.h>

da sind die Fonts bereits fix und fertig bzw. austauschbar und änderbar.
und die Textausgabe ist gut unterstützt.

z.B. für einen Scrolltext einfach ein char-Array/string an diesen Codeschnipsel übergeben:

void scrollText(char *p)
//scroll text on matrix
{
  uint8_t charWidth;
  uint8_t cBuf[8];  // this should be ok for all built-in fonts
  mx.clear();
  while (*p != '\0')
  {
    charWidth = mx.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf);
    for (uint8_t i = 0; i < charWidth + 1; i++) // allow space between characters
    {
      mx.transform(MD_MAX72XX::TSL);
      if (i < charWidth)
        mx.setColumn(0, cBuf[i]);
      delay(DELAYTIME);
    }
  }
}

Übersichtlicht oder?

Einmalig muss das Modul in der .h richtig parametrieren werden. Wenn du einen GENAUEN LINK deines Produktes setzen würdest, könnte man sogar besser unterstützen.

Was ich nutze: MD_Parola (falls Deine Module einen MAX7219 oder MAX7221 Treiberbausten haben) Ist zwar für Scrolling, aber auch für feststehende Texte. Video: http://www.youtube.com/watch?v=u1iELyROjW8

Hi,

ich habe mir diese zusammenhängenden Module besorgt.

https://www.amazon.de/gp/product/B079HVW652/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

Ja diese haben pro modul wohl jewiels einen MAX72XX. Ich werde mir jetzt mal eure Alternativen ansehen.

@Moko was ist der untershcied zwischen einem Parola und meinem Modul?

treeshort: Ich werde mir jetzt mal eure Alternativen ansehen.

setze für dieses Modul dazu in der MD_MAX72xx.h so ca in Zeile 240 diesen define auf 1

define USE_FC16_HW 1

(und die anderen auf 0)

treeshort: @Moko was ist der untershcied zwischen einem Parola und meinem Modul?

Sorry, ich verstehe die Frage wohl nicht: MD_Parola ist Software, Dein Modul ist Hardware. Deine Module sollten mit MD_Parola funktionieren, haben ja einen MAx7219 drauf.

Hi

Selber benutze ich folgende Lib: markruys/arduino-Max72xxPanel und bin recht zufrieden damit. ZIP herunter laden und in der IDE unter "Sketch, Bibliothek einbinden, .ZIP-Bibliothek hinzufügen" auswählen und die Beispiele antesten. Man kann hier neben der Lage der einzelnen 8x8er Matrix auch Deren Ausrichtung angeben, so kann man dann ohne irgend welche Probleme mehrere dieser Matrixen im Zick-Zack aufbauen und bekommt trotzdem den Text dahin, wo Er hin soll.

MfG

treeshort: @Moko was ist der untershcied zwischen einem Parola und meinem Modul?

Die Parola-Bibliothek paßte nicht zu meinen Modulen, da die Schrift um 90° gedreht angezeigt wurde. Daher habe ich sie nicht benutzt. Möglicherweise habe ich aber eine Option zum Drehen übersehen.