Forum: Mikrocontroller und Digitale Elektronik Arduino Hilfe Gesucht.


von Shin N. (Firma: hnjmf) (shin-natsume)


Lesenswert?

Hallo Liebes forum

ich bin bei Arduino noch relatife neu und brauche hilfe.
zunächst einmal zu meinen projekt.

ich möchte mir ein LED cube bauen und disen über Arduino ansteuern
da ich aber noch nicht so weit bin mit Programieren habe ich vor erstmal
verschiedene zwischen projete zu machen um es zu lehrenen.

zuerst einmal einmal die ansteuerung von 10 LEDs
Dann 10X5 LED matrix
Led cube 3x3x3 oder 5x5x5

Habe jetzt folgenes problem

da ich später die led matrix im program 2d darstellen will
Z.B

L0000000000
L0000000000
L0000000000
L0000000000
L0000000000

nun habe ich ein bischen probiert und es soweit hinbekommen das ich in
der loop zb L0010011011 schreibe und diese auch angezeit bekomme auf der
led aber nur wen ich vorher L1000000 benant hab.

also

void loop()
{
  L0000000(100);
  L0001000(100);
  L0011100(100);
  L0111110(100);
  L1111111(100);
  L0111110(100);
  L0011100(100);
  L0011100(100);
  L0001000(100);
}


void L1000000(int Zeit)
{
  int i = 0;
  while (i<Zeit)
  {
    digitalWrite(13,HIGH);
    delay(5);
    digitalWrite(13,LOW);
    delay(5);

    i = i + 1;
  }
}

möchte jetzt aber nich für jede fariante das schreiben müssen das währ
zu viel.

Gibt es da für eine lösung oder eine möglichkeit das besser zu machen
als so? wichtig ist erst mal nur das ich den sketch für die zwischen
projete weiter ausbauen kann also von d1 zu d2 und dann d3.

Hoffe ihr könnt mir da helfen.  und bitte keine sachen wie machs auf
admega ic oder so mag bei arduino bleiben.

liebe grüße und danke

: Verschoben durch User
von Robert L. (lrlr)


Lesenswert?

Das hat ja nichts mit Arduino zu tun
du kannst einfach nicht Programmieren

von Düsendieb (Gast)


Lesenswert?

Finde du hast einen unübersichtlichen Ansatz gewählt

Würde es in Pseudo Code so machen

Timerschleife:
{
zalhl++
if Zahl >10 zahl=0
}

Void main
{
if zahl == 1 Muster 1 ausgeben;
if zahl == 2 Muster 2 ausgeben;
if zahl == 3 Muster 3 ausgeben;
if zahl == 4 Muster 4 ausgeben;
if zahl == 5 Muster 5 ausgeben;

USW
if zahl == 10 Muster 10 ausgeben;


}

von Shin N. (Firma: hnjmf) (shin-natsume)


Lesenswert?

genau und daher auch die frage wie ich es anstelle oder besservorgehe 
dabei
und ich kann kleidere sachen schon machen so die anfänger sachen aber 
das reicht ja anscheinent nicht für daher benötige ich hilfe oder tips

von Max H. (hartl192)


Lesenswert?

An welchen Pins und wie hast du sie LEDs angeschlossen? Schaltplan?

von Joachim B. (jar)


Lesenswert?

Shin N. schrieb:
> benötige ich hilfe oder tips

Robert L. schrieb:
> Das hat ja nichts mit Arduino zu tun
> du kannst einfach nicht Programmieren

OK war zwar schon ein Tip aber vielleicht versteckt, also:
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/c-kurs

o.ä.

von Shin N. (Firma: hnjmf) (shin-natsume)


Lesenswert?

beim ersten zwischen projekt sind die 10 leds alle + an pin 13,12,11,10 
usw. masse zusammen

beim zweiten kommen dan noch trasistoren dazu so das ich erstmal bei 
dier kleinen LED matix 15 pins brauche.

von Shin N. (Firma: hnjmf) (shin-natsume)


Lesenswert?

Joachim B. schrieb:
> Shin N. schrieb:
>> benötige ich hilfe oder tips
>
> Robert L. schrieb:
>> Das hat ja nichts mit Arduino zu tun
>> du kannst einfach nicht Programmieren
>
> OK war zwar schon ein Tip aber vielleicht versteckt, also:
> http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/c-kurs
>
> o.ä.

ja genau möchte aber nicht c+ lernen sonder die sprache für arduino die 
sind nicht 100% gleich

von Techniker (Gast)


Lesenswert?

Besa schreibn ;)

von Joachim B. (jar)


Lesenswert?

Shin N. schrieb:
> ja genau möchte aber nicht c+ lernen sonder die sprache für arduino die
> sind nicht 100% gleich

wo siehst du Unterschiede?

von Max H. (hartl192)


Lesenswert?

Shin N. schrieb:
> beim ersten zwischen projekt sind die 10 leds alle + an pin 13,12,11,10
> usw. masse zusammen
Versuche es mal mit dieser Funktion:
1
//Untested
2
void ledOut(uint16_t leds, int time)
3
{
4
   digitalWrite(13, leds & (1 << 9) ? HIGH : LOW);
5
   digitalWrite(12, leds & (1 << 8) ? HIGH : LOW);
6
   digitalWrite(11, leds & (1 << 7) ? HIGH : LOW);
7
   digitalWrite(10, leds & (1 << 6) ? HIGH : LOW);
8
   digitalWrite( 9, leds & (1 << 5) ? HIGH : LOW);
9
   digitalWrite( 8, leds & (1 << 4) ? HIGH : LOW);
10
   digitalWrite( 7, leds & (1 << 3) ? HIGH : LOW);
11
   digitalWrite( 6, leds & (1 << 2) ? HIGH : LOW);
12
   digitalWrite( 5, leds & (1 << 1) ? HIGH : LOW);
13
   digitalWrite( 4, leds & (1 << 0) ? HIGH : LOW);
14
   
15
   while(time--)
16
     delay(10);
17
}
18
19
//Usage:
20
void loop()
21
{
22
  ledOut(0b0000000, 100);
23
  ledOut(0b0001000, 100);
24
  ledOut(0b0011100, 100);
25
  ledOut(0b0111110, 100);
26
  ledOut(0b1111111, 100);
27
  ledOut(0b0111110, 100);
28
  ledOut(0b0011100, 100);
29
  ledOut(0b0011100, 100);
30
  ledOut(0b0001000, 100);
31
}

Shin N. schrieb:
> ja genau möchte aber nicht c+ lernen sonder die sprache für arduino die
> sind nicht 100% gleich
Aduino ist C++.

: Bearbeitet durch User
von Shin N. (Firma: hnjmf) (shin-natsume)


Lesenswert?

danke hartl192 werde ich gleich mal probieren

von Düsendieb (Gast)


Lesenswert?

Max H. schrieb:
> while(time--)
>      delay(10);

dies delay Klamotten im Hauptprogramm sind einfach Bullshit.
Lernt Timer zu programieren

von Max H. (hartl192)


Lesenswert?

Düsendieb schrieb:
> Max H. schrieb:
>> while(time--)
>>      delay(10);
>
> dies delay Klamotten im Hauptprogramm sind einfach Bullshit.
> Lernt Timer zu programieren
Das lassen wir besser erstmal, wenn schon so einfache Sachen ein Problem 
sind.

von Düsendieb (Gast)


Lesenswert?

Dann warten wir mal ab, bis er versucht, das Beispiel für das 
Multiplexen zu verwenden

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.