Arduino Sketch hängt nach ca. 5ter Wiederholung

Hallo an alle,

ich habe angefangen mir ein Sketch zu schreiben, in dem ich verschiedene Animationen von LEDs ablaufen lasse.

Das Programm läuft dann ca. 5 mal, bis es sich im 6ten Durchgang nach der ersten Animation aufhängt. Ich kann das Programm durch den Reset Button wieder Starten.

Wenn man Beobachtet, wie die LEDs leuchten, fallen mir ab und zu Unregelmäßigkeiten auf (LEDs blinken kurz auf, wenn sie eigentlich nicht leuchten sollten). Diese Unregelmäßigkeiten haben scheinbar ein Muster und werden auch scheinbar schlimmer, bis das Programm nicht mehr weiter läuft.

Hat jemand Tipps, wie man das Programm aufbauen sollte, damit es "stabil" läuft?

Das Programm läuft auf dem Arduino UNO, welcher über USB vom PC mit Strom versorgt wird.

// Verschiedene Animationen
// Ohne Button zum Weiterschalten
// Ohne Potentiometer zur Geschwindigkeitsregelung
// Mit delay Funktion

byte ledPin[] = {2,3,4,5,6,7,8,9,10,11,12,13};

int i,x;
long Pause = 1000;
int Speed = 50;

void setup() {
  for (i=0; i<12; i++) {
    pinMode (ledPin[i], OUTPUT);
  }

}

void loop() {
//-------------------------Annimation 1-------------------------------------------
  for (i=0; i<12; i++){
    digitalWrite (ledPin[i], LOW);
  }
    for (x=0; x<5; x++){
      for (i=0; i<12; i++) {
      digitalWrite (ledPin[i], HIGH);
      delay (Speed);
      digitalWrite (ledPin[i], LOW);
      }
    }
delay (Pause);

//-------------------------------Annimation 2-------------------------------------------
  for (i=0; i<12; i++){
    digitalWrite (ledPin[i], LOW);
  }
    for (x=0; x<5; x++){
      for (i=13; i>-1; i--) {
      digitalWrite (ledPin[i], HIGH);
      delay (Speed);
      digitalWrite (ledPin[i], LOW);
      }
    }
delay (Pause);

//------------------------------Annimation 3-------------------------------------------
  for (i=0; i<12; i++){
    digitalWrite (ledPin[i], LOW);
  }
    for (x=0; x<5; x++){
      for (i=0; i<12; i++) {
      digitalWrite (ledPin[i], HIGH);
      delay (Speed);
      }
        for (i=0; i<12; i++){
        digitalWrite (ledPin[i], LOW);
        }
    }
delay (Pause);

//-------------------Annimation 4-------------------------------------------
  for (i=0; i<12; i++){
    digitalWrite (ledPin[i], LOW);
  }
    for (x=0; x<5; x++){
      for (i=13; i>-1; i--) {
      digitalWrite (ledPin[i], HIGH);
      delay (Speed);
      }
        for (i=0; i<12; i++){
        digitalWrite (ledPin[i], LOW);
        }
    }
delay (Pause);
}

Danke für die Mühe!

Grüße

Spontan fällt mir diese Zeile ins Auge:

for (i=13; i>-1; i--) {

i=11 wäre besser.

for (i=13; i>-1; i--) {

Hier bist Du außerhalb des Arrays. Das Array geht von ledPin[0] bis ledPin[11]

Grüße Uwe

Das war der Fehler. Ich hatte nicht bedacht, dass der Array bei Null Beginnt, auch wenn ich es bei den anderen Animationen unbewusst richtig gemacht habe.

Vielen Dank für die schnelle Hilfe!

Grüße und schönen 1. Advent (bei uns liegt sogar Schnee)

eule_beule:
Grüße und schönen 1. Advent (bei uns liegt sogar Schnee)

Danke für die Rückmeldung, bei uns liegt auch Schnee und schönen adventlichen Sonntag :slight_smile:

Vielleicht noch eine allgemeine Frage. Kann ich das Topic auf "abgeschlossen" oder "beantwortet" stellen und schließen?

Nöö!

Wenn du magst, kannst du deine Anfangsfrage ändern und den Titel um [gelöst] ergänzen. Oder so ähnlich. Das hindert aber keinen, dein Problem danach weiter zu ergänzen.