Forum: Mikrocontroller und Digitale Elektronik Arduino Lauflicht


von Peter21 (Gast)


Lesenswert?

Hallo,

ich bastel gerade mit dem Arduino ein Lauflicht.

Da habe ich folgenden Code gefunden: Passt der Code so? Weil 
funktionieren möchte es nicht. Vllt habe ich ja auch nur was falsch 
gesteckt.

Könnte jemand sich den Code anschauen?


int pin[8] = {2, 3, 4, 5, 6, 7, 8, 9};

int zaehler;


int zeit = 50;


void setup() {

  for(zaehler = 2;zaehler<10;zaehler++){
    pinMode(zaehler, OUTPUT);
  }
}

void loop() {

  for(zaehler = 1;zaehler<11;zaehler++){

      digitalWrite(zaehler, LOW);
      delay(zeit / 2);
      digitalWrite(zaehler + 1, HIGH);
      delay(zeit / 2);
      digitalWrite(zaehler + 2, HIGH);
      delay(zeit / 2);
      digitalWrite(zaehler + 3, HIGH);
      delay(zeit / 2);
  }


}

von Einer K. (Gast)


Lesenswert?

> zaehler + 3
kann zu 13 werden, und das willst du sicherlich nicht.

Mein Tipp:
Wenn du ihn gefunden hast, dann tue ihn wieder dahin zurück.

Ansonsten bietet er schon das Potential, dass man ihn reparieren könnte.
Dazu würde gehören, dass man das Array mit den Pins entweder nutzt, oder 
entsorgt.

von Peter21 (Gast)


Lesenswert?

ja im Netz gefunden.

Das mit dem Array hat mich auch irgendwie verwundert. Wenn ich es 
richtig sehe wird es doch gar nicht benutzt oder?


Kann ich die Zeile also komplett löschen.


Wie bekomme ich das mit der 13 in Griff?

von STK500-Besitzer (Gast)


Lesenswert?

Peter21 schrieb:
> ich bastel gerade mit dem Arduino ein Lauflicht.
Hab ich auch schon - ohne Mikrocontroller - als ich 11 Jahre alt war.

> Da habe ich folgenden Code gefunden: Passt der Code so? Weil
> funktionieren möchte es nicht. Vllt habe ich ja auch nur was falsch
> gesteckt.
Kannst du denn die LEDs einzeln leuchten lassen?

> Könnte jemand sich den Code anschauen?
Und dann?
Pippifax-Code.
Dir fehlen Grundlagen.

von Peter21 (Gast)


Lesenswert?

ja einzeln gehen die LED mit digitalWrite low und high schon an.

von Jan L. (ranzcopter)


Lesenswert?

* in setup() initialisierst du von Pin 2 bis 9
* in loop() läuft deine Schleife von 1 bis 10 bzw. 13
* ‚zeit‘ wird auf 50 gesetzt, und dann munter halbiert o_O

- ich würde ‚zeit‘ mal höher setzen, 25ms sind vielleicht bissel kurz
- for-Schleife in loop() analog zur Schleife in setup() machen
- simpelste Lösung für die ‚zaehler + 1‘ etc. Konstrukte: jeweils hinter 
ein if() setzen, das auf zaehler<10 prüft

von Einer K. (Gast)


Lesenswert?

Ich habe das Beispiel mal gebürstet, und hoffentlich alle Läuse und 
Flöhe entfernt....

Vielleicht kannste ja was damit anfangen.
1
const byte leds[] = {2, 3, 4, 5, 6, 7, 8, 9};
2
const unsigned long leuchtdauer = 50UL;
3
4
byte index = 0; // index der leuchtenden LED
5
6
void setup() 
7
{
8
  for(byte led:leds) pinMode(led,OUTPUT);
9
}
10
11
void loop() 
12
{
13
  digitalWrite(leds[index],HIGH);
14
  delay(leuchtdauer);
15
  digitalWrite(leds[index],LOW);
16
  index++; // eine led weiter schalten
17
  index %= sizeof(leds); // wrap around
18
}
ungetestet
Schätze aber mal, das das Lauflicht läuft.

von Toxic (Gast)


Lesenswert?


von Einer K. (Gast)


Lesenswert?

Peter21 schrieb:
> Kann ich die Zeile also komplett löschen.
Ich plädiere für: Nutzen.

von Richard S. (rscheff)


Lesenswert?

Arduino F. schrieb:

> const byte leds[] = {2, 3, 4, 5, 6, 7, 8, 9};

Mach doch KITT, mit

const byte leds[] = {2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3};

(Alternativ, als erhöhte Schwirigkeitsstufe, mit einem Flag und IF 
(conditional) increment / decrement...

:)

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.