hallo
seit paar tagen(bin ein anfänger) versuche ich eine led matrix mit
arduino uno r3 zu bauen.
Nun hab ich eine 3x3 matrix nach langen verushcen auf einem breadboard
hinbekommen.
Jetzt versuche ich das ganze teil zu steuern.
z.B.
ich schalte nur den mittleren led ein also 2.reihe und 2.spalte
zuerst dachte ich der code sei das hier:
1
voidsetup(){
2
pinMode(5,OUTPUT);
3
pinMode(6,OUTPUT);
4
pinMode(7,OUTPUT);
5
pinMode(11,OUTPUT);
6
pinMode(12,OUTPUT);
7
pinMode(13,OUTPUT);
8
}
9
10
voidloop(){
11
digitalWrite(6,HIGH);//2.reihe
12
digitalWrite(12,HIGH);//2.spalte
13
}
das lieferte mir aber dass jeweils das led der 1.+3.reihe in der
2.spalten leuchten
wenn ich das benutze klappts
1
voidsetup(){
2
pinMode(5,OUTPUT);
3
pinMode(6,OUTPUT);
4
pinMode(7,OUTPUT);
5
pinMode(11,OUTPUT);
6
pinMode(12,OUTPUT);
7
pinMode(13,OUTPUT);
8
}
9
10
voidloop(){
11
digitalWrite(5,HIGH);//1.reihe
12
digitalWrite(7,HIGH);//3.reihe
13
digitalWrite(12,HIGH);//2.spalte
14
}
es sieht so aus dass man mehr zeilen für 1 led benötigt als für 2;)
wenn es so stimmen würde hab ich die vermutung dass das der positive
strom von reihe 1 und 3 die reihe 2 isoliert damit der strom von - nach
+ strömen kann
naja und meine 2.frage gleich wäre wie man mehrere leds gleichzeitig in
verschiedenen spalten darstellen kann oder das es zumindest so aussieht
das alle gleichzeitig leuchten z.B eine diagonale
naja danke im vorraus :D
Bei sowas lässt man normalerweise immer nur EINE Led auf einmal
leuchten.
Wenn mehrere gleichzeitig leuchten sollen wechselt man hald ziemlich
schnell öfters zeischen beiden hin und her.
Siehe Youtube; Led Multiplexing
Dein Denkansatz ist müll!
Wenn du die mittlere LED eischalten willst, muss die Zeile (Pin 6) auf
Low und die Spalte (Pin 12) auf High. Mit beiden Pins auf High oder Low
wird deine Led nicht leuchten.
Und schau mal hier:
LED-Matrix - http://www.mikrocontroller.net/articles/LED-Matrix
@thomas_l
naja mit meiner 2ten variante hat es funktioniert
aber ich weis nicht warum das so ist und warum dein vorschlag nicht bei
mir klappt
hab im anhang ein bild von meinem board hochgeladen
die grünen kabel verbidet die anoden und die gelben die kathoden
alle leds leuchten so ist alles richtig verbunden
...
ich hoffe ihr könnt mir weiterhelfen
Dein Bild oben irritiert mich etwas.
Du schreibst das grün mit der Anode verbunden ist. Der rechte grüne
Draht geht aber auf GND. Wie leuchten da die LED?
ne guck rihtig hin es sind die pins 8-13 dan folgt gnd
die ersten 3 pins links von den grünen 3er kabel sind pon 8-10
folglich sind die 3kabel auf 10-13 vllt wegen dem knick im letzten kabel
niht erkenbar
das grüne kabel was ganz recht ist weit weg von den anderen 3 dient als
befestigung des boards hab das loch mit dem kabel am breadboard
befestigt..
Ja, ist im Bild etwas verschoben.
Du musst die nicht benötigten Spalten und Zeilen mit Pinmode(Input)
abschalten. So kannst du immer nur eine Led einschalten.
Willst du mehrere Led gleichzeitig einschalten, so muss das schnell
hintereinander geschehen.
Achte auch darauf das der max. Strom an einem Pin nur 20mA sein darf.
Wenn z.B. in einer Zeile alle Led gleichzeitig leuchten.
Die Schaltung sollte passen, nur die Software nicht.
Für die linke obere Led sollte es so sein:
pinMode(5,OUTPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(11,INPUT);
pinMode(12,INPUT);
pinMode(13,OUTPUT);
digitalWrite(5,LOW); //1.reihe
digitalWrite(13,HIGH); //3.spalte
So ist es etwas einfacher, zumindest um zwei Zeilen weniger.
Das vorhergehende war aus einer Schaltung mit Dualleds.
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
das aber nicht warum?
das kommt als error:
------------------------------------------------------------
test.cpp: In function 'void loop()':
test:57: error: expected primary-expression before ']' token
test:57: error: expected primary-expression before '{' token
test:57: error: expected primary-expression before ']' token
test:57: error: expected primary-expression before '{' token
-------------------------------------------------------------
diese schreib weise ist angenehmer da man die variablen nicht immer
deklarieren muss außer demm bekom ich auch errors wen ich virablen mit
den selben namen wieder deklariere
gibt es eine lösung?
>> das aber nicht warum?
Du schreibst jetzt 100 mal:
Ich soll nicht C# Syntax benutzen, wenn ich C++ programmiere.
> diese schreib weise ist angenehmer da man die variablen nicht immer> deklarieren muss außer demm bekom ich auch errors wen ich virablen mit> den selben namen wieder deklariere>> gibt es eine lösung?
deine lösung ist genau wie meine erste variante was funktionieert
man muss immer neue variablwn deklarieren also man muss dann mit value3
und 4 weiter machen...
gibt es keine einfachere möglichkeit mit weniger zeilen???