Koppelrelais


Google-Suche auf MEINE-SCHALTUNG.de :





Dauerkalender


Matrix 1088AS mit Max7219 und Arduino


In dem Versuch verwende ich ein fertiges Anzeige-Modul, das aus der 8x8 LED-Matrix 1088AS und Treiberchip Max7219 besteht. Solche Module sind zurzeit relativ günstig überall im Handel erhältlich. Man kann sie als komplett fertige Module oder als Bausätze zum Selbermachen erwerben. Die Matrix 1088AS besteht aus acht Reihen und acht Spalten und stellt damit 64 LEDs zur Verfügung. Die Ansteuerung der LEDs übernimmt der Chip Max7119, der von Arduino mit Hilfe von nur drei Leitungen angesprochen wird. Dementsprechend ist der Verdrahtungsaufwand äußerst gering:

Schaltplan Matrix 1088AS MAX7219

Schaltplan (Arduino ohne USB-Anschluss oder Netzteil: Vin > 6 V)


Bei dem Einsatz von Max7219 werden keine Widerstände benötigt, die normalerweise der Reihen oder Spalten vorgeschaltet werden müssten. Ein weiterer ganz großer Vorteil des Bausteins ist die Tatsache, dass er für uns die Aufgabe des Multiplexings automatisch erledigt. Damit wird der Mikrokontroller stark entlastet und auch der Programmierungsaufwand wird kleiner. Max7219 kann bei Bedarf kaskadiert werden und damit mehrere Anzeigen (LED-Displays, Siebensegment-Displays, Bargraf- oder Matrix-Displays) ansteuern.

Testschaltung


In dem Arduino-Programm (Sketch) kommt die Bibliothek "LedControl.h" zum Einsatz.
(Eberhard Fahle, https://github.com/wayoda/LedControl)
Die dank der Bibliothek zur Verfügung gestellten Funktionen erleichtern zusätzlich die Programmierung. Die Bibliothek muss vor dem Programmstart installiert werden.


Das Programm

// *************************************************************
// MATRIX 8x8 1088AS
// Treiber MAX 7219
// Arduino Mega 2560 R3
// *************************************************************

#include "LedControl.h"

LedControl lc=LedControl(12,10,11,1); 

         // ----------------------------------------------
         // LedControl (DIN, CLK, CS, Anzahl) / Anschlüsse
         // lc.shutdown (Adresse, Status) / Modus
         // lc.setIntensity (Adresse, Wert) / Helligkeit
         // lc.clearDisplay (Adresse) / Löschen
         // lc.setRow (Adresse, Reihe, Byte) / Led-Reihe
         // ----------------------------------------------

byte BitReihe = B11111111;
byte BitReiheH = B00000000;
bool Bit;

byte R[] =
{ B01111000, B01000100, B01000100, B01111000,
  B01100000, B01010000, B01001000, B01000100
};

void setup() {
  lc.shutdown(0,false); 
  lc.setIntensity(0,8); 
  lc.clearDisplay(0);    
}

void Reihen () {
  BitReihe = B11111111;
  for (int i=0; i<8; i++) {
    lc.clearDisplay(0);
    lc.setRow(0,i,BitReihe); 
    delay (100); } 
}

void Spalten () {
  for (int i=0; i<8; i++) {
    BitReihe = B00000000;
    bitWrite (BitReihe, i, 1);
    lc.clearDisplay(0);
    for (int j=0; j<8; j++) {
      lc.setRow(0,j,BitReihe); }
    delay (100); } 
}

void Rconst () {
  lc.clearDisplay(0);
  for (int i=0; i<8; i++) {
    lc.setRow(0,i,R [i]);  } 
  delay (1000);
}

void Rinvert () {
  for (int i=0; i<8; i++) {     
    for (int j=0; j<8; j++) {   
      BitReihe = B00000000;
      BitReiheH = R[j];
      for (int k=0; k<=i; k++) {        
        Bit = bitRead (BitReiheH, k); 
        bitWrite (BitReihe, 7-k, Bit); }        
      lc.setRow(0, j, BitReihe); } } 
  delay (1000);
  lc.clearDisplay(0);
}

void Rscroll () {
  for (int i=0; i<15; i++) {      
    for (int j=0; j<8; j++) {    
      BitReihe = B00000000;
      BitReiheH = R[j];
      for (int k=0; k<8; k++) {        
        Bit = bitRead (BitReiheH, k); 
        bitWrite (BitReihe, i-7+k, Bit); }        
      lc.setRow(0, j, BitReihe); }    
    delay(200); } 
}

void loop() {
    Reihen ();
    Spalten ();
    Rconst ();
    Rinvert ();
    Rscroll ();
}      
// *************************************************************



Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz