Code:
/*
Matrix
LED-Matrix zeigt ein Bild
Dieses Beispiel aus dem Fritzing Creator Kit: www.fritzing.org/creator-kit.
*/
// Belegung der Matrix (Z=Zeile / S=Spalte)
// obere Pins
// S1 Z5 Z3 S4 Z8 S2 Z2 Z1
// untere Pins
// S3 S6 Z4 S8 Z6 Z7 S7 S5
// Anschluss Matrix an Arduino Mega
// obere Pins
// 22 24 26 28 30 32 34 36
// untere Pins
// 38 40 42 44 46 48 50 52
// Pinbelegung für Arduino MEGA
int reihenPins[8] = {36,34,26,42,24,46,48,30};
int spaltenPins[8] = {22,32,38,28,52,40,50,44};
int image[8][8]={ // Bild, das auf der Matrix gezeigt wird. 1 = LED an, 0 = LED aus
{0,1,0,0,0,0,1,0},
{1,1,1,0,0,1,1,1},
{0,1,0,0,0,0,1,0},
{0,0,0,1,1,0,0,0},
{0,0,0,1,1,0,0,0},
{1,0,0,0,0,0,0,1},
{0,1,1,1,1,1,1,0},
{0,0,1,1,1,1,0,0}
};
void setup(){
for (int i=0; i<8; i++){ // Alle Pins werden als OUTPUT declariert
pinMode(reihenPins[i],OUTPUT);
pinMode(spaltenPins[i],OUTPUT);
}
}
void loop(){
for (int y=0; y<8; y++){ // zeilenweise werden
for (int x=0; x<8; x++){ // von links nach rechts alle Einträge des Arrays geprüft
if (image[x][y]==1){ // ist der Eintrag = 1
digitalWrite(spaltenPins[x],HIGH); // wird der Spaltenpin eingeschalten
} else { // sonst
digitalWrite(spaltenPins[x],LOW); // abgeschalten
}
}
digitalWrite(reihenPins[y],LOW); // nun wird der Reihenpin auf LOW geschalten (da es die Kathode der LED betrifft bedeutet LOW eingeschalten: LOW = GND)
delayMicroseconds(100); // das Programm hällt 100 Mikrosekunden an
digitalWrite(reihenPins[y],HIGH); // danach wird der Reihenpin wieder auf HIGH (in diesem Fall also abge-) schalten
}
}
Lesezeichen