Leistungsmotorschutzschalter


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Matrix 1088BS mit Schieberegister 74HC595 und Arduino


Die LED-Matrix 1088BS besteht aus 64 Leuchtdioden, die in acht Reihen und acht Spalten angeordnet sind. Die Matrix verfügt über 16 Anschlüsse, die angesteuert werden müssen. Zu diesem Zweck werden in dem Beispiel zwei Schieberegister 74HC595 eingesetzt. Jedes Register stellt acht Ausgänge zur Verfügung. Damit kann man jede einzelne Leuchtdiode der Matrix erreichen und zum Leuchten bringen.
Die Anordnung der Pins ist ein wenig gewöhnungsbedürftig und sieht wie folgt aus:

Pin Belegung_1088BS


Aus der Anordnung kann entnommen werden, dass zu einem bestimmten Zeitpunkt nur eine einzige LED pro Spalte gezielt angesprochen werden kann. Versucht man eine weitere Spalte zu aktivieren, so werden u.U. auch "ungewollte" LEDs zum Leuchten gebracht. Um beliebige Zeichen, Ziffern oder Buchstaben darzustellen, muss bei dieser Matrix Multiplexing angewendet werden. Dabei werden die LEDs in kurzen Abständen nacheinander ein- und ausgeschaltet. Eine Testschaltung mit der Matrix, zwei Schieberegistern, acht Widerständen und Arduino könnte dann so aussehen:

matrix_1088bs_74hc595_testschaltung.jpg


Auf dem Schaltplan kann man sehen, dass die beiden Schieberegister 74HC595 in Reihe geschaltet sind. Die Bits für das zweite Register (Pin 14) stammen von dem ersten Register (Pin 9). Dabei ist das erste Schieberegister für die Reihen, das zweite für die Spalten zuständig. Grundsätzlich werden, um jedes beliebige Zeichen auf der Matrix darzustellen, nur drei Leitungen (drei Ausgänge) von Arduino benötigt. Der Schaltplan:

Schaltplan Matrix mit Schieberegister

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


Das Programm

// *************************************************************
// MATRIX 8x8 1088BS
// 2 x Schieberegister 74HC595
// Arduino Mega 2560 R3
// *************************************************************

int SH_CP_Pin = 40;                 // SHCP / Shift Clock --
int ST_CP_Pin = 42;                 // STCP / Latch Clock --
int DS_Pin = 44;                    // DS Data -------------

byte BS = B00000000;                // Spalten -------------
byte BR = B00000000;                // Reihen --------------
byte KreuzS [] = {126, 189, 219, 231 };
byte KreuzR [] = {129, 66,  36,  24  };

byte Satz[] = {BS, BR};

void Senden () {                    // Daten zu 74HC595 ----
  digitalWrite(ST_CP_Pin, LOW);
  for (int i=0; i<2; i++) {   
    shiftOut(DS_Pin, SH_CP_Pin, MSBFIRST, Satz[i]);     
  }
  digitalWrite(ST_CP_Pin, HIGH);
}

void Nullen () {                    // Bytes nullen --------
  BS = B11111111;
  BR = B00000000;
}

void setup() {
 pinMode(ST_CP_Pin, OUTPUT);
 pinMode(SH_CP_Pin, OUTPUT);
 pinMode(DS_Pin, OUTPUT);
}
 
void loop () {                      // Hauptprogramm -------

  for (int b1=0; b1<8; b1++) {      // Ablauf senkreucht ---
    for (int b2=0; b2<8; b2++) {
      Nullen ();
      bitWrite (BS, b1, 0);
      bitWrite (BR, b2, 1);
      Satz[0] = BS;
      Satz[1] = BR;
      Senden();
      delay (50);
    }
  }  

  for (int b1=0; b1<8; b1++) {      // Ablauf horizontal ---
    for (int b2=0; b2<8; b2++) {
      Nullen ();
      bitWrite (BS, b2, 0);
      bitWrite (BR, b1, 1);
      Satz[0] = BS;
      Satz[1] = BR;
      Senden();
      delay (50);
    }
  } 

  for (int i=0; i<200; i++) {       // Kreuz ---------------
    for (int j=0; j<4; j++) {
      Satz[0] = KreuzS [j];
      Satz[1] = KreuzR [j];      
      Senden();
      delay (3);
    }
  }    
}       
// *************************************************************



Kurzvideo

Kurzvideo


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz