LED steuern mit arduino uno r3

OP #2852682
Lesenswert?

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
void setup(){
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
void loop(){
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
void setup(){
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
void loop(){
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
Angehängte Dateien:
OP #2852888
Lesenswert?

@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
Angehängte Dateien:
OP #2854168
Lesenswert?

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..
#2854298
Lesenswert?

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.
OP #2854876
Lesenswert?

ok hab ich

funktioniert auch ich brauch bissel hilfe beim programmieren
hab einige methoden gemacht

ein der arrays als eingabe wert besitzt
1
void animateLeds(int leds, int xs[], int ys[], int time){
2
  int times=int(time/(3*fps));
3
  while(times>=0){
4
    for(int n=0;n<leds;n++){
5
       setLed(xs[n],ys[n]); 
6
    }times--;
7
  }
8
}

nun will ich diese benutzen
1
void loop(){
2
  int xs[]={0,0,0};
3
  int ys[]={0,1,2};
4
  animateLeds(3,xs,ys,2000);
5
  delay(1000);
6
  clearMatrix();
7
}

das klappt auch
1
void loop(){
2
  animateLeds(3,new int[]={0,0,0},new int[]={0,1,2},2000);
3
  delay(1000);
4
  clearMatrix();
5
}

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?
#2854891
Lesenswert?

Imran H. schrieb:


>
1
> void loop(){
2
>   animateLeds(3,new int[]={0,0,0},new int[]={0,1,2},2000);
3
>   delay(1000);
4
>   clearMatrix();
5
> }
6
>
>
> 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?
1
void loop(){
2
  int values1[] = { 0, 0, 0 };
3
  int values2[] = { 0, 1, 2 };
4

5
  animateLeds(3, values1, values2, 2000);
6
  delay(1000);
7
  clearMatrix();
8
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren