Pages: [1]   Go Down
Author Topic: 3x3 Matrix Code-Probleme  (Read 565 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Community,

ich habe mich letzte Woche mit LED-Matrizen beschäftigt. Aus Mangel an LEDs konnte ich mich aber nur an einer 2x2 Matrix probieren. Funktionierte einwandfrei soweit. Gestern kamen dann noch ein paar LEDs und ich hab mir eine 3x3 Matrix auf mein Breadboard gesteckt.

Wenn ich diese nun mit meinem Multimeter-Diodentest durchprobiere geht das einwandfrei, so wie ich es mir vorgestellt habe. Je nachdem welche Enden ich verbinde, leuchtet die entsprechende LED auf.
An meinem Arduino (Uno) angeschlossen und per Code angesteuert funktioniert das allerdings nicht mehr so wie es sollte.

Code:
void setup() {
  pinMode(4, OUTPUT);    // spalte 1  
  pinMode(6, OUTPUT);    // spalte 2
  pinMode(7, OUTPUT);    // spalte 3
  pinMode(11, OUTPUT);   // zeile 1
  pinMode(12, OUTPUT);   // zeile 2
  pinMode(13, OUTPUT);   // zeile 3
}


void loop() {
  digitalWrite(4, HIGH);
  digitalWrite(11, HIGH);
}

So funktioniert es zwar in den oberen beiden Zeilen, nicht aber in der unteren. Wenn ich dann zum Beispiel die LED in Zeile 1, Spalte 1 leuchten lassen will, leuchten die Lämpchen in Spalte 1 der Zeile 2 und 3. Muss ich vom Code her noch was Besonderes beachten, oder sollte ich meine Schaltung nochmal überprüfen (nicht, dass ich das nicht schon gefühlte 21313 Mal getan habe smiley-wink)?

Mich wundert es halt, da es mit dem Diodentest perfekt funktioniert.
« Last Edit: April 17, 2011, 12:40:26 pm by unsignedint » Logged

NRW
Offline Offline
Sr. Member
****
Karma: 1
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie hast du das verdrahtet?
Wenn ich deinen Code richtig verstehe gibst du auf zeile und spalte plus/high
wo ist da ne masse/-?
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20281
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also 3 Probleme:
* Wenn Du eine Matrix machen willst dann steuere jeweils alle LEDs einer Zeile an. So brauchst Du für eine 3x3 Matrix nur 3 Zeiteinheiten. Wenn Du jedes LED einzeln ansteuerst, dann brauchst Du bei einer 3x3 Matrix 9 Zeiteinheiten.
* Ein Arduino Ausgang kann nur 40mA Strom geben; darum brauchst Du einen Treiber. Benutze einen ULN2803 und schalte damit die Katoden auf Masse.
* Dein Kode, den Du uns geschickt hast macht gar nichts.
Zuerst mußt Du alle Ausgänge einen definierten Zustand geben (LOW). Dann mußt Du die Zeile HIGH legen und alle LEDs die nicht leuchtn sollen ebenfalls HIGH. Dann wieder alle LEDs LOW und Zeile LOW und mit der nächsten Zeile weitermachen.  
Alternativ kannst Du auch alle Reihen-Ausgänge wo die LED nicht leuchten sollen als Eingang definieren. und nur als Ausgang wenn ein LED leuchten soll. So verhindert Du kurzzeitiges aufleuchten falscher LEDs.

Eine Beschreibung wie Du die LEDs geschaltet hast, wäre hilfreich.
Grüße Uwe  
 
  
Logged

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Super danke!
Es lag schlicht daran, dass ich die entsprechenden Pins nicht mehr auf LOW gesetzt habe.
Logged

Pages: [1]   Go Up
Jump to: