Longbardo:
Noch eine letzte Frage wie gebe ich "delay(1000); // Pause zwischen den LEDSequenz" an wenn ich die im loop eingebe funktionieren Vorgabe der Array nicht mehr (Ich möchte die pausen zwischen den LED high to low bestimmen das die LED nicht sofort überspringt sondern einen kurzen Augenblick wartet)
Warum gibt es inzwischen von Dir DREI Threads zum SELBEN THEMA?
Einmal hast Du mein komplett mit deutschen Variablennamen und deutschen Kommentaren geschriebenes Programm sogar in den internationalen Teil des Forums gepostet, wo vermutlich nur die wenigsten Forenteilnehmer Deutsch verstehen.
Grundsätzlich besteht ein Programm aus zwei Bestandteilen, und zwar:
1.) Datenstrukturen, die die physikalische Welt in Deinem Programm auf den RAM-Speicher abbilden
2.) Algorithmen zur Anwendung auf die Datenstrukturen, die die Ablauflogik bilden
Wenn Deine LEDs nun plötzlich außer einer Einschaltphase auch noch eine Ausschaltphase aufweisen sollen, bevor die nächste LED dran ist, muss sich das auch in der Datenstruktur wiederspiegeln. Du kannst entweder in der Datenstruktur die Ausschaltphase als eigene Schaltzeit festlegen:
/ Struktur für eine LED
struct led_t { byte pin; int EINzeit; int AUSzeit; };
// Array für alle LEDs
led_t leds[]={
{ 2, 200, 1000 }, // pin-2, 200ms EIN, 1000ms AUS
{ 3, 1200, 1000 },
{ 4, 3200, 1000 },
{ 5, 500, 1000 },
};
Oder Du definierst eine GESAMTzeit, in der die LED insgesamt dran ist, und schlägst die Ausschaltzeit auf die Einschaltzeit drauf, um die Gesamtzeit zu erhalten:
/ Struktur für eine LED
struct led_t { byte pin; int EINzeit; int GESAMTzeit; };
// Array für alle LEDs
led_t leds[]={
{ 2, 200, 1200 }, // pin-2, 200ms EIN, 1200ms GESAMT
{ 3, 1200, 2200 },
{ 4, 3200, 4200 },
{ 5, 500, 1500 },
};
Und wenn Du Dir eine Datenstruktur für Dein neues Programm ausgesucht und definiert hast, schreibst Du für diese Datenstruktur Deinen neuen Algorithmus, nach dem die LEDs zeitweise EIN und zeitweise AUS geschaltet werden, immer wenn diese LED an der Reihe ist, statt nur für eine bestimmte Zeit EIN wie vorher.
Generell gibt es aber immer ganz viele verschiedene Möglichkeiten, etwas zu programmieren.
Man sollte nur möglichst von Anfang an wissen, was eigentlich programmiert werden soll, weil danach die grundlegenden Datenstrukturen im Programm festgelegt werden müssen.
Falls es Dir aufgefallen ist, dass ich die Angabe "char wert;" in der Datenstruktur weggelassen habe: Die Information ist redundant ("doppelt gemoppelt") und kann daher weggelassen werden. Denn der einer LED zugeordnete Buchstabe ergibt sich ja quasi direkt bereits aus der Position der LED im Array, mit der Beziehung ('A'+ledIndex==leds[ledIndex].wert). Also braucht der Wert nicht extra in der Datenstruktur durch das Programm geschleppt werden.
Ist das eine Übungsaufgabe und Du hast einen festen Abgabetermin?
Und wir sollen hier Deine Übungsaufgabe vollständig für Dich lösen, ohne dass Du irgendwas dabei machst (außer die LEDs über Vorwiderstände mit dem Arduino verbinden)?
Oder versuchst Du es selbst, aus der neuen Datenstruktur und grob angelehnt an das von mir bereits gepostete Programm, oder auch mit blockierendem "delay()" wenn Dir das lieber ist, das neue Programm mit den zusätzlichen Ausschaltzeiten zu programmieren?