Ich bin gerade bei dem Versuch mit dem Arduino, über den "max7219" eine LED-Matrix zu betreiben. Erst einmal habe ich es mit dem Programm http://www.arduino.cc/playground/LEDMatrix/Max7219 hier probieren. Das ging allerdings völlig schief egal was ich mache es leutet immer die komplette matrix. Jetzt hab ich vor mir selber ein entsprechendes Programm zu schreiben und wollte fragen wie ich den "dataIn", "clock" und den "load" eingang beim max7219 ansteuern muss um bestimmte ausgänge am max7219 anzuschalten.
Dieses Programm habe ich ja schon versucht zu benutzen. Ich habe maxInUse auf 1 geändert und sonst eigentlich nichts. Nur bei void setup(){} musste ich noch beginSerial(9600) in Serial.begin(9600) ändern da sonst nicht kompieliert werden konnte weil der befehl beginSerial nicht existiert. Keine ahnung warum das Fehlerhaft war. Aber wie gesagt das Programm führte dazu das die Matrix kommplett leuchtet (ich habe bei void loop(){} natürlich nur maxsingle() benutzt bzw. einfach mal gar nichts hineingeschrieben trozdem immer komplette matrix an.)


vor 2 years 18 weeks
Hallo S.E.P.P
Der max7219 hat ein serielles Interface eben "dataIn", "clock" und "load" .
Es wird immer ein 16 bit Block übertragen. Bei der abfallenden Flanke von load beginnt die Übertragung. Dann 16 clock Signale. Bei der steigenden Flanke des clock wird der Zustand von datain in den Speicher des 7219 geladen.
Der 16 bit Block setzt sich aus 4 nicht benutzten Bits, 4 Adress oder Komandobits und 8 Daten Bits zusammen.
Wenn mehrere max7219 kaskadiert sind (data out des ersten mit datain des 2. verbunden und load un clock an alle gleichzeitig) dann müssen mehrmals nacheinander die Komandos gesendet werden)
Anschluß an den Arduino über die Pins:
dataIn = 2;
load = 3;
clock = 4;
int maxInUse = 4; //change this variable to set how many MAX7219's you'll use
auf 1 ändern; gibt an wieviele max7219 in Reihe über dataout-datain verbunden sind.
funktionen zum schreiben:
maxSingle( byte reg, byte col) //für einen max7219
maxAll (byte reg, byte col) // für alle max7219
maxOne(byte maxNr, byte reg, byte col) //maxOne is for adressing different MAX7219's, whilele having a couple of them cascaded
um einen einzelnen der kaskadierten max7219 anzusteuern.
Zuerst die Initialisation:
//initiation of the max 7219
maxAll(max7219_reg_scanLimit, 0x07); // set to use 8 digits
maxAll(max7219_reg_decodeMode, 0x00); // using an led matrix (not decoding 7 segments)
maxAll(max7219_reg_shutdown, 0x01); // not in shutdown mode
maxAll(max7219_reg_displayTest, 0x00); // no display test
for (e=1; e<=8; e++) { // empty registers, turn all LEDs off
maxAll(e,0);
}
dann die Werte hineinschrieben über
maxSingle(1,1); // + - - - - - - - wenn nur 1 max7219 verwendet wird
maxAll(1,1); // + - - - - - - - an alle max7219
oder
maxOne(2,1,1); // + - - - - - - - an den 2. max 7219
Genaueres unter :
http://www.arduino.cc/playground/LEDMatrix/Max7219
http://datasheets.maxim-ic.com/en/ds/MAX7219-MAX7221.pdf
Login or register to post comments