Forum: Mikrocontroller und Digitale Elektronik Arduino Lauflicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter21 (Gast)


Bewertung
0 lesenswert
nicht 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 Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
ja einzeln gehen die LED mit digitalWrite low und high schon an.

von Jan L. (ranzcopter)


Bewertung
0 lesenswert
nicht 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 Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Toxic (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Arduino Fanboy D. (ufuf)


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

von Richard S. (rscheff)


Bewertung
0 lesenswert
nicht 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...

:)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.