LED steuern mit arduino uno r3

OP #2852682
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
@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
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);
OP
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?
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.