Leds nacheinander anschalten und 10min halten

Hallo, ich bin völlig unbewandert im programieren und möchte die Lektion Nr8, 8 leds ... folgendermaßen verändern

Leds nacheinander mit einem Zeitabstand von5 sekunden anschalten und dann 10min anlassen. Dann alles wieder von vorn. Ich benutze ein arduino uno r3. Ich habe alles nach anweisung zusammengebaut und es funzt auch. Nur die 10min halten bekomme ich nicht hin. Kann jemand helfen?

Vielen Dank im orraus

dann stell mal deinen bisherigen Sketch hier in code-tags ein. Wir sehen ja nicht was deine "Hausübung 8" ist.

Nur die 10min halten bekomme ich nicht hin.

10 Minuten sind 600 Sekunden sind 600000 ms.
Das wird aber hoffentlich nicht dein Problem sein.

Das wird aber hoffentlich nicht dein Problem sein.

Du bist aber auch schwer von Begriff, manchmal!
:smiling_imp: :smiling_imp: :smiling_imp:

Du sollst ihm doch den Code schreiben,.....

const byte dieLeds[] {3,4,5,6,7,8,9,10};
void setup(){for(const byte led:dieLeds)pinMode(led,OUTPUT);}
void loop() 
{
  for(const byte led:dieLeds)delay(5000),digitalWrite(led,1);
  delay(10UL * 60 * 1000);
  for(const byte led:dieLeds)digitalWrite(led,0);
}

Edit: Klammerfehler behoben

Jetzt bleibt die Frage, wie er den schon vorhandenen Code erweitert. In deiner Lösung ist vermutlich davon nicht viel des bisherigen wiederzufinden.

Danke übrigens für den Tip mit dem Komma statt Semikolon. Das ersetzt zwei geschweifte Klammern, also Fingerverrenkungen auf deutschen Tastaturen. Hätte ich auch selber drauf kommen können, bin ich aber nicht. Wenn man aufpasst, lernt man was und wird gleichzeitig glücklich. :sunglasses:

Danke übrigens für den Tip mit dem Komma statt Semikolon.

Den Anweisungsverkettungsoperator verwende ich eigentlich nur in der Not.
z.B. im Kopf einer zählenden Schleife.
Hier war es wirklich nur Faulheit.

Es gibt noch mehr so lustige Sachen.....(die kaum einem unter die Augen kommen)
z.B. wenn man mal zu faul ist eine Funktion für eine Fakultätsberechnung zu schreiben

const long fakVon6 {({long temp=1;for(int i=1;i<=6;temp*= i,i++);temp;})};
Serial.print(fakVon6);// sagt 720

Auch wieder mit Anweisungsverkettungsoperator :wink:

Jetzt bleibt die Frage, wie er den schon vorhandenen Code erweitert. In deiner Lösung ist vermutlich davon nicht viel des bisherigen wiederzufinden.

Schicksal!
Wer seinen Code nicht zeigt, muss mit den Folgen leben lernen.

... ich frage mich, ob die vielen delay() reine Absicht waren, daß man den Code für sonst nichts Anderes gebrauchen kann ...

@TO
Vll. wäre Es eine gute Idee gewesen, irgendwie 'Lektion Nr.8' zu verlinken ...

MfG

PS: @TO - der Code von Combie funktioniert (nach Deinen bisherigen Angaben) - solltest Du dennoch 'Meeehhhrrr' damit machen wollen - noch wären wir hier, Mitarbeit ist aber durchaus gerne gesehen.

MfG

Hier war es wirklich nur Faulheit

Das "nur" verstehe ich nicht.

Fleiß kan man simulieren, Faulheit nicht.

michael_x:
Das "nur" verstehe ich nicht.

Manchmal gibt es eine Notwendigkeit, da keine schöne/einfache Alternative darauf lauert, wahrgenommen zu werden.

Hier gibts einfache Alternativen:

// for(const byte led:dieLeds)delay(5000),digitalWrite(led,1);

// alternativ:
 for(const byte led:dieLeds){delay(5000);digitalWrite(led,1)};


// --------

//const long fakVon6 {({long temp=1;for(int i=1;i<=6;temp*= i,i++);temp;})};


// alternativ:
const long fakVon6 {({long temp=1;for(int i=1;i<=6;temp*=i++);temp;})};

Nicht immer ist es so einfach und so klar.
z.B. wenn nur ein Ausdruck erlaubt ist, man sich aber ernsthaft um Sequence Points Sorgen machen muss

Der beste Einsatz für den Komma Operator, ist als Sequence Point Spender.


postmaster-ino:
... ich frage mich, ob die vielen delay() reine Absicht waren, daß man den Code für sonst nichts Anderes gebrauchen kann ...

Anforderungen gelesen, interpretiert, so gut ich konnte, und dann in Arduino gegossen.
Auf die härteste, knappeste, Art und Weise.
Delay kam mir da gerade recht.

Tipp für Insider:
Man kann das Kind mit yield() wieder aus dem Brunnen fischen.

Sorry, hier der code

//www.elegoo.com
//2016.12.9 

int tDelay = 1000;
int latchPin = 11;      // (11) ST_CP [RCK] on 74HC595
int clockPin = 9;      // (9) SH_CP [SCK] on 74HC595
int dataPin = 12;     // (12) DS [S1] on 74HC595

byte leds = 0;

void updateShiftRegister()
{
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, LSBFIRST, leds);
  digitalWrite(latchPin, HIGH);
}

void setup() 
{
 pinMode(latchPin, OUTPUT);
 pinMode(dataPin, OUTPUT);  
 pinMode(clockPin, OUTPUT);
}

void loop() 
{
 leds = 0;
 updateShiftRegister();
 delay(tDelay);
 for (int i = 0; i < 8; i++)
 {
   bitSet(leds, i);
   updateShiftRegister();
   delay(2500);
 }

Das problem ist, das die 8 leds zwar mit 2,5sec abstand leuchten und auch an bleiben , aber wenn alle brennen möchte ich das sie 10 min anbleiben und dann alles wieder von vorn beginnt

Danke

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Ein Neuuser sieht keine Codetags. Er weiß nicht das er erst auf "Preview" klicken muss um die Symbolleiste zu sehen. Er weiß nicht, dass man den erweiterten Editor in den Usereinstellungen erst einstellen muss.

[EDIT] Unsinnige Tabelle und Links entfernt. Uwe; Moderator.[/EDIT]

... davon ab fehlt eine Klammer

Dann kompiliert der Sketch sogar ohne Warnungen - obwohl Das bei Weitem kein ideales Beispiel ist - Das ist so ziemlich das Beste, was wie seit Langem zu Gesicht bekommen haben.

Der Sketch bleibt akut alle naselang im delay() hängen - zu Retten ist Da eh Nichts mehr - also warum nicht So weiter machen?

Du bekommst bis jetzt alle 2,5 Sekunden eine LED mehr ans Leuchten.
Was hindert Dich daran, hinter der FOR ein delay(10000); zu schreiben?
Dann würden die 8 leuchtenden LEDs für 2,5 + 10 Sekunden Dauerleuchten (also ggf. nur ein delay(7500), damit wir mit den 2,5 Sekunden aus der FOR auf ganze 10 kommen).

Nach dieser Wartezeit wird Alles gelöscht und die erste LED wieder angeworfen (Anfang von loop());

Wann dazwischen auch noch eine Wartezeit eingefügt werden soll - bekämen wir Das auch noch hin - aber dann sollten wir wirklich langsam drüber nachdenken, wie wir Das besser hinbekommen.

MfG

PS: @urdaino - was denkst Du, weshalb wir Ihm Das, Post-Count bei 2, sogar schon direkt am Anfang versuchen beizubringen?
PPS: Eine schöne Tabelle hast Du Da angehangen - was soll der Krampf nun bringen?
Bis auf 'ganz viel Traffic für's Forum' hat Das nun was genau gebracht?
Oder zählst Du Dich nun auch zu den Neulingen, weil man Das ja nun auch nicht von vorne herein wissen muß ... daß jedes Zeichen auch beim Gegenüber ankommen muß ...

michael_x:
Jetzt bleibt die Frage, wie er den schon vorhandenen Code erweitert. In deiner Lösung ist vermutlich davon nicht viel des bisherigen wiederzufinden.

Da hast du wohl mehr Wahr, als ich erwartet habe.
Je erwartet hätte.

Meinen Glückwunsch, zu deiner Weitsicht!

urdaino:
Ein Neuuser sieht keine Codetags. Er weiß nicht das er erst auf "Preview" klicken muss um die Symbolleiste zu sehen. Er weiß nicht, dass man den erweiterten Editor in den Usereinstellungen erst einstellen muss.

Wenn er mit dem Lesen und Umsetzen der von mir beschriebenen Vorgehensweise schon überfordert ist, wie soll das dann erst mit der Programmierung werden.

Gruß Tommy

postmaster-ino:
PPS: Eine schöne Tabelle hast Du Da angehangen - was soll der Krampf nun bringen?

Ich habe keine Tabelle angehangen. Wende dich bitte an die Betreiber des Forums wegen des Fehlers.

Tommy56:
Wenn er mit dem Lesen und Umsetzen der von mir beschriebenen Vorgehensweise schon überfordert ist, wie soll das dann erst mit der Programmierung werden.

Gruß Tommy

Es wäre wohl besser nicht vorzuschreiben, sondern einen Weg aufzuzeigen. Das vermisse ich aber in deiner "Vorschrift".

Sie zitierten mich?
Möge der Herr mich doch bitte erleuchten ...

MfG

PS: @urdaino
Ich vermisse hier auch Einiges ...

postmaster-ino:
Sie zitierten mich?
Möge der Herr mich doch bitte erleuchten ...

MfG

PS: @urdaino
Ich vermisse hier auch Einiges ...

Den Post verstehe ich nicht, bitte um Erleuchtung.
Danke

urdaino:
Es wäre wohl besser nicht vorzuschreiben, sondern einen Weg aufzuzeigen. Das vermisse ich aber in deiner "Vorschrift".

Wenn Du darin keinen Weg siehst, hast Du noch viel zu lernen.

Gruß Tommy