Arduino 3x3 LED-Matrix

Ich versuche, eine 3x3-Matrix mit Multiplexing zum Laufen zu bringen. hier ist meine einstellung:

Alt-Text

Ich habe jede Reihe Kathoden und jede Spalte Anoden angeschlossen und diese an die Pins 0,1,2 bzw. 8,9,10

das einzige was ich beleuchten kann ist die unterste reihe, aber wenn ich die mittlere reihe zum beispiel damit beleuchten möchte:

digitalWrite(8, HIGH);     
digitalWrite(9, HIGH);     
digitalWrite(10, HIGH);     

digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);

nichts passiert.

ist mein verkabelungsaufbau vielleicht falsch?

Sind Sie sicher, dass Sie die Polarität aller Ihrer LEDs richtig haben?
Haben Sie die erforderlichen Pin-Modi für die Ausgabe eingestellt? zB pinMode(8, OUTPUT); PinMode (9, AUSGANG); PinMode (10, AUSGANG); PinMode (0, AUSGANG); PinMode (1, AUSGANG); PinMode (2, AUSGANG);
@vicatu, ich würde das als Antwort positiv bewerten. (Ähm, in 2 Stunden, wenn mein Tageslimit aufgebraucht ist.)
Danke für das Foto. Sieht so aus, als wären Sie auf dem besten Weg zu einem großartigen Projekt. :-)

Antworten (4)

Hier ist eine Skizze dessen, was Sie zur Verdeutlichung und zum Nutzen anderer beschrieben haben:

Gute Dinge zu tun an dieser Stelle:

  • Stellen Sie sicher, dass Sie Strombegrenzungswiderstände in Reihe mit jeder LED haben. 560Ω wird auf ~6mA begrenzt. Wenn diese derzeit nicht vorhanden sind, können einige LEDs durchgebrannt sein, also überprüfen Sie sie. Der ATmega128/328 (je nachdem, was sich auf Ihrem Board befindet) ist auf * 20 mA pro Pin ** begrenzt.
  • Überprüfen Sie mit einem Voltmeter oder einer Logiksonde, ob die Pins tatsächlich hoch oder niedrig gehen, wenn Sie sie so programmieren.

*Hier muss ich mich korrigieren. Das ist die eigentliche Einschränkung:

27.1 Absolute Höchstwerte
HINWEIS: Belastungen, die über die unter „Absolute Höchstwerte“ aufgeführten hinausgehen, können das Gerät dauerhaft beschädigen. Dies ist nur eine Belastungseinstufung, und der funktionelle Betrieb des Geräts unter diesen oder anderen Bedingungen, die über die in den Betriebsabschnitten dieser Spezifikation angegebenen hinausgehen, ist nicht impliziert. Die Einwirkung absoluter Höchstleistungsbedingungen über einen längeren Zeitraum kann die Zuverlässigkeit des Geräts beeinträchtigen. ...

DC Current per I/O Pin             40.0 mA  
DC Current V and GND Pins       200.0 - 400.0 mA 

...
Obwohl jeder I/O-Port mehr als die Testbedingungen (20 mA bei VCC = 5 V, 10 mA bei VCC = 3 V) unter stationären Bedingungen (nicht transient) aufnehmen kann, muss Folgendes beachtet werden: TQFP und QFN /MLF Paket: 1] Die Summe aller IOL, für alle Ports, sollte 400 mA nicht überschreiten. 2] Die Summe aller IOL, für die Ports A0 - A7, G2, C3 - C7 sollte 100 mA nicht überschreiten. 3] Die Summe aller IOL, für die Ports C0 - C2, G0 - G1, D0 - D7, XTAL2 sollte 100 mA nicht überschreiten. 4] Die Summe aller IOL, für die Ports B0 - B7, G3 - G4, E0 - E7 sollte 100 mA nicht überschreiten. 5] Die Summe aller IOL, für die Ports F0 - F7, sollte 100 mA nicht überschreiten. Wenn IOL die Testbedingung überschreitet, kann VOL die zugehörige Spezifikation überschreiten. Es wird nicht garantiert, dass Stifte einen Strom ziehen, der größer als die aufgeführten Testbedingungen ist.

Ein Widerstand für jeden Zeilentreiber-Pin und ein Widerstand für jeden Spaltentreiber-Pin (in diesem Fall 6 Widerstände) funktionieren hervorragend, unabhängig davon, ob die Software Zeilen- oder Spaltenscannen oder beides durchführt. Die meisten LED-Matrix-Arrays setzen nur Widerstände auf die Spaltentreiberstifte oder nur Widerstände auf die Zeilentreiberstifte. (In diesem Fall 3 Widerstände). Das funktioniert in Ordnung, solange die Software und die Hardware übereinstimmen, ob Sie Zeilen- oder Spaltenscans durchführen.

Ohne Strombegrenzung verlassen Sie sich darauf, dass das Mikro den Strom begrenzt. Durch das gleichzeitige Einschalten mehrerer Ausgänge wird viel Strom verbraucht. Ich würde 3 Widerstände zum High-Bus hinzufügen, 330-560 Ohm zu den Ausgängen auf 8, 9, 10. Schalten Sie jeweils nur eine LED ein. Wenn Sie das Erscheinen mehrerer LEDs gleichzeitig benötigen, können Sie die Ausgänge schneller nacheinander takten.

Ich glaube nicht, dass Sie so multiplexen können. Sie verwenden alle diese Pins als Ausgänge, dh digitalWrite (X, HIGH) macht den Ausgang von Pin X +5 Volt. Um zwei Ausgänge zusammen zu verwenden, benötigen Sie eine Art Schalter (z. B. ein UND-Gatter oder eine Konfiguration von Transistoren). Ich würde sagen, Sie sollten besser ein Schieberegister (3 Eingänge bis 8) verwenden, indem Sie nur 9 Ausgangsleitungen von der Platine verwenden, eine für jede LED, und dann den Code zur Steuerung der Matrix schreiben.

Hoffe das hilft :)

Dein Setup sieht korrekt aus. Die digitalen Pins 0 und 1 von Aruino sind jedoch auch serielle Ein-/Ausgänge. Wenn Sie auch die serielle Kommunikation verwenden, können Sie sie nicht als digitalen Eingang verwenden. Versuchen Sie es mit anderen Stiften.