In diesem Code wird definiert das Du den Pin PC0 des Ports C für die Übertragung der Daten an den 74HC595 benutzt, hierbei handelt es sich um den Analog 0 Pin des Arduinos !
Würdest Du den Analog 2 Pin für die Übertragung der Daten an den 74HC595 benutzen wollen müsstest Du den Code folgendermassen ändern, Analog 2 ist PC2.
Diesem Bild kannst Du entnehmen welcher Arduino Pin zu welchem Port gehört und welche Bezeichnung er hat:
Z.B.
Digital Pin 2 befindet sich beim Port D also PORTD, er hat die Bezeichnung PD2.
Digital Pin 12 hingegen findet man beim Port B und hat die Bezeichnung PB4 !!!
Danke, danke, danke!
Das Bild hab ich gebraucht. Somit kann ich jedem Pin die Funktionen des Clock- und Datapins zuweisen, sehe ich das richtig?
Nur die Latch muss zusammen mit der Latch des Tlcs zusammengeschlossen werden, und die kann man auch nicht ändern?
Aus dem Pin Mapping steht bei Pin 9 'OC1A/PCINT1' und dieses 'PCINT' steht ja auch noch bei den Analogen Eingängen, bzw. das 'OC..' auch noch bei den Pins 10 und 11.
Noch mals vielen Dank für all die Hilfe!
Grüße Moritz
Wära ja nicht so gut wenn das multiplexen langsam geschehen würde..
Eine letzte Frage hab ich da noch. Ist es notwendig bei den for-Schleifen immer uint8_t als Datentyp zu nehmen?
Ich hab das auch schon mit Integer ausprobiert und das funktioniert genauso gut. Gibt es da trotzdem unterschiede, vielleicht bei der Schnelligkeit?
Die kann ich aber behandeln wie normale Integer oder?
Eine Sache ist mir noch beim Testen der Matrix aufgefallen. Obwohl ich keine RGB Leds habe erkennt man eine deutliche Schwächung einzelner Leds, sobald mehrere in einer Reihe leuchten. Das liegt vermutlich an den 130mA pro Reihe, die der TLC maximal ausspuckt oder?
Wie kann man da vorgehen um den Fehler zu beheben?
Wie multiplexst Du?
Der TLC muß jede Kathode der LED ansteuern und zwar mit 5 bis 10 mA und der 595 selektiert eine Reihe indem er die Anoden der LED auf +5V legt.
uwefed:
Wie multiplexst Du?
Der TLC muß jede Kathode der LED ansteuern und zwar mit 5 bis 10 mA und der 595 selektiert eine Reihe indem er die Anoden der LED auf +5V legt.
Ja, der 595 steuert die Anoden und der Tlc die Kathoden, wobei die Leds die ich verwende 15-30mA benötigen. :~
Megaionstorm:
Indem Du zwischen die Ausgänge des 74H595 und den Anoden der Matrix Darlington Transistoren schaltest
Damit kann man die Leds dann über eine externe Spannungsquelle betreiben? Sehr gut!
moehoe:
Und wieso keine normalen Transistoren? Wo liegt der Unterschied zu den Darlington Transistoren?
In der Verstärkung.
Leistungstransistoren haben prinzipbedingt eine kleinere Verstärkung als Kleinsignaltransistoren und somit brauchen Leistungstransistoren einen großen Basisstrom um in Sättigung zu gehen. Eine Darlingtonschaltung eliminiert dieses Problem.
Megaionstorm:
Den Code zur Ansteuerung der Matrix durch den 74HC595 hat mir Alex Leone persönlich zugeschickt !
Herzlichen Dank Megaionstorm und natürlich auch an Alex Leone!
Die Library funktioniert problemlos und ist einfach zu nutzen. Ich schlage vor, sie zusammen mit einem Beispiel ins tlc5940arduino hochzuladen, damit andere, auch nicht deutschsprachige Nutzer hiervon ebenfalls profitieren können.
Ich benutze die Library mit einem ATMega1284p zur Ansteuerung von zwei 4-stelligen 7-Segment-Displays, die gerade in einem bekannten Auktionshaus für kleines Geld angeboten werden (Typ CL5642BH). Der ganze Entwurf kommt mit einem TLC5940 und einem 74HC595 als Treiber aus, da die Anzeigen bei normaler Helligkeit sehr genügsam sind. Mit der Möglichkeit, jedes Segment individuell zu dimmen, lassen sich dann interessante Effekte beim Aufbau, Abbau und Verschieben der Zahlen realisieren.
Einziges Problem ist allerdings, dass die Library recht zeitkritisch ist. Eine Kommunikation über I2C ist kaum möglich, was nicht nur Echtzeit- und Messanwendungen schwierig macht, sondern auch die Ansteuerung des Displays über einen eigenen, getrennten ATMega328p. Wird das Timing verletzt, landen einzelne Ziffern an der falschen Stelle oder Segmente bleiben dauerhaft dunkel oder hell.
Vielleicht hat jemand eine Idee, wie man die I2C-Kommunikation mit dem Multiplexen verschachteln kann, damit die Interrupts sich nicht in die Quere kommen...
Ich benutze die Library mit einem ATMega1284p zur Ansteuerung von zwei 4-stelligen 7-Segment-Displays, die gerade in einem bekannten Auktionshaus für kleines Geld angeboten werden (Typ CL5642BH).