Go Down

Topic: Anfänger Problem - Programmabläufe (Read 608 times) previous topic - next topic

mkl0815


mkl0815, ist das für einen Anfänger nicht ein komplizierter Lösungsvorschlag?
Grüße Uwe

Früher oder später wird man sich mit Interrupts auseinandersetzen. Da der OP schreibt, das er schon einige schicke Programme geschrieben hat, halte ich das durchaus für eine Lösungsidee. Man wächst ja mit seinen Herausforderungen :-)
Außerdem bekommt man hier im Forum bei konkreten Fragen, wenn halt nicht gleich beim ersten Versuch klappt, auch super Hilfe.
Die Idee von Ice-Man ist aber auch gut. In der Loop den Code für den "Blink-Wechsel" überspringen, wenn die Zeit noch nicht "reif" ist. Allerdings wird das bei der Blink-Sequenz auch etwas komplexer bei der Programmierung.

Grüße,
Mario.

daschxx

Vielen Dank für die schnellen Antworten.
Hab das ganze jetzt so gelöst:
void loop() {
   cnt++;
   if(cnt==10) //wenn cnt = 10 (also 10*geschwindigkeit)
   {
     cnt=0;
     led(); //ruft Programm led() auf
   }
   delay(geschwindigkeit);  //1-100 also keine Lange Pause im Ablauf
 }
void led(void)
{
...
}

somit ist delay niemals länger als 100 also 0,1 sec für mich reicht das vollkommen aus.

uwefed


...
Die Idee von Ice-Man ist aber auch gut. In der Loop den Code für den "Blink-Wechsel" überspringen, wenn die Zeit noch nicht "reif" ist. Allerdings wird das bei der Blink-Sequenz auch etwas komplexer bei der Programmierung.
Grüße, Mario.


Lieber Mario.
Ist genau das, was ich gelinkt habe, aber nicht expliziert erklärt habe.  ;) ;) ;)
Grüße Uwe

uwefed


Code: [Select]
int lastSecond;
.....................
if (lastSecondone != millis()/1000) {     
    lastSecondone = millis()/1000;}



Ich würde das mit dem "durch 1000 dividieren" nicht machen da es nur mehraufwand ist und man einfach anstatt mit Sekunden zu rechnen mit Millisekunden rechenen muß.
Grüße Uwe

Go Up