11x10 Matrix Code Hilfe

Hallo ich möchte zuerst sagen das ich ein Anfänger in Elektronik bin und manche werden sich wahrscheinlich denken "was für ein Noob". Aber naja :) Ich mache grad ein Nachbau der Qlocktwo von Biegert und Funk. Zuerst habe ich die Komplette anleitung von Christians Bastelladen befolg aber da ich noch ein Arduino Uno hatte wollte ich dieses brauchen. Ich habe alles Gelötet und alles getestet. Nur da der Programmcode von Christian nicht für das Arduino ist musste ich diesen selber schreiben. NUR: Das problem ist 1. Es gibt keine Anleitung für mehr als 2 74hc595 Shift Register 2. Wenn ich den von Arduino.cc nehme spacken meine Leds ganz Komisch rum Ich wäre euch verbunden wenn mir jemand helfen könnte. Ich möchte zuerst alle Leds nacheinander leuchten lassen. Nur da gibt es schon Probleme.

Freundliche Grüsse Lars

lars23200: Das problem ist 1. Es gibt keine Anleitung für mehr als 2 74hc595 Shift Register

Der Code skaliert doch bequem. Du musst nur mehr Daten raus schieben. 6-8 SR in Reihe geht glaube ich ohne Probleme. Du kannst auch mehrere SR Reihen nebeneinander machen. Also die Reihen und Spalten jeweils an eigene Pins.

Wichtig: 100nF Abblock-Kondensatoren an jedem IC nicht vergessen.

lars23200: Das problem ist 1. Es gibt keine Anleitung für mehr als 2 74hc595 Shift Register

Bei seriellen Shiftregistern ist es ja auch immer dasselbe in der Schaltung: Der Dateneingang des nachfolgenden ICs wird an das Überlauf-Bit des vorhergehenden ICs angeschlossen.

Auf dieser Seite ist das "Daisy Chaining" der Bausteine schematisch im Schaltbild dargestellt. Und es wird auch ein Breadboard-Aufbau mit 4 hintereinandergeschalteten Bausteinen gezeigt, der 32 LEDs steuert.

Allerdings sehe ich jetzt auf dieser Beispielseite von Nick Gammon nicht, wozu die bitBangedSPI-Library in seinem Programmbeispiel notwendig sein soll. Normalerweise bringt die Arduino-IDE ja mit dem shiftOut() Befehl alles notwendige mit, um Shiftregister über frei wählbare Pins anzusteuern.

Ist die bitBangedSPI-Library nicht schneller als die shift out Funktion. Bei den 595 Schieberegister die über 16MHz Clock vertragen und bei vielen Schieberegistern hintereinender muß man schon etwas wegen der Geschwindigkeit schauen. Bei einer einfachen Wordclock die alle Minute was ändert (die 4 LED an den Ecken) ist das nciht so wichtig; aber wenn man zusätzlice Effekte wie zB das Überblenden einbaut wird es wichtig.

PS Ich würde heutzutage solche Sachen mit WS2812 machen.

PPS normale 74HC595 vertragen wenig Strom an den Ausgängen (MAX 70m an allen Ausgängen zusammen). Ich würde die mit Opendrainleistungsausängen nehmen TIPIC6C595 .

Grüße Uwe

Ich habe die erste Wordclock auch mit einer Maritx aufgebaut aber gerade bei Matrix anteuerungen hat man das extreme Probleme der Helligkeit das man nur bedingt duch “übersteuern” der LED kompensieren kann.
Die Erste Uhr war mit zwei MAX7221 aufgebaut. Meine jetzige Uhr (von ein paar Tagen) fertig gestellt habe ich mit WS2812B auf Platinen gemacht.
Der größte Nachteil an den 74HC595 sind der zu geringe Strom den diese TriState Teiber nur liefern kann.

Hier mal ein paar alte Einträge aus unserm Forum
http://forum.arduino.cc/index.php?topic=135604.0
http://forum.arduino.cc/index.php?topic=275239.0

Gruß
DerDani

IMG-20150103-WA0008.jpg

Ich würde wenn es noch geht auf die MAX7221 umschwenken da musst du dich nicht um das Multiplexen kümmen da gibt es hier im Playground Libraries für. Ich habe damals eine umbebaut von shiftOut auf SPI umgebaut um weniger Flackern.

Danke für die schnellen antworten. Jedoch kann ich jetzt nicht mehr "umschwenken", denn ich mach das ganze als mein Abschlussprojekt und ich muss es in ca. 9 Tagen abgeben :(. Es funktioniert doch auch so oder nicht ?

Du wirst die extrem um das timing Kümmern müssen vor allem nimm nicht das normale Shiftout sondern von der SPI schnittstelle das SPIOUT das ist mindestens 10 mal schneller als das normale Shiftout.
Gruß
DerDani

Danke für die antwort, ich habe nun das SPIOUT genutzt doch ich habe die gleichen Probleme wie vorhin. Wenn ich zb. 1 rausshifte leuchtet bei mir das: 00010000000 00000000000 00000000000 00000000000 00000000000 usw. Ich möchte aber sowas haben: zeile[1] 00010001000 doch dies ist für die Arduino ein Binär System... Wenn ihr versteht xD Lg Lars

Wenn mehr Bits rausgeschoben werden als notwendig, dann purzeln die übrigen einfach hinten raus. Was genau rauspurzelt hängt davon ab, ob LSB (0) oder MSB (128) zuerst rausgeschoben wird. Deshalb würde ich MSB first empfehlen, dann landet das niedrigste Bit immer in der ersten Stufe des ersten Schieberegisters.

Das ist mir schon bewusst... Wenn ich aber 0000010 Rausshifte dann ist das für das arduino: 2 da 10 Binär 2 ist..

8-Bit Konstanten kannst du auch Binär angeben: http://www.arduino.cc/en/Reference/IntegerConstants

Für größere Zahlen ist Hex eine bequeme Option