@mic:
Ich glaub da hast Du mich nicht so ganz verstanden.
Probier mal das aus und schau Dir die Ausgaben im Terminal an - dann sollte deutlich werden was ich meine:
Code:startStopwatch3(); while(true) { if (getStopwatch3() < 800) { setLEDs(63); writeString_P("das hier wird gaaanz oft aufgerufen. Stopwatch: "); writeInteger(getStopwatch3(),DEC); writeChar('\n'); } else if (getStopwatch3() < 800+800) { setLEDs(0); writeString_P("Noch mehr... Stand der Stopwatch: "); writeInteger(getStopwatch3(),DEC); writeChar('\n'); } else if (getStopwatch3() < 800+800+800) { setLEDs(63); writeString_P("und noch mehr ... Stopwatch: "); writeInteger(getStopwatch3(),DEC); writeChar('\n'); } else if (getStopwatch3() < 800+800+800+1000) { // hier mal zur Abwechslung nix ausgeben setLEDs(0); } else setStopwatch3(0); mSleep(10); // ja das ist absichtlich hier drin, damit die // Ausgaben nicht noch schneller erfolgen... }
Bei den setLEDs Funktionen macht es natürlich keinen Unterschied ob man 1x setLEDs(0) aufruft oder 1000x.
Bei einer Sound Ausgabe aber schon! Die sollte man nur ein einziges mal Aufrufen sonst klappt es nicht richtig.
Naja - geht aber auch deutlich einfacherMit "case" sieht's nicht wirklich besser aus:![]()
Das ist übrigens equivalent zu:Code:startStopwatch1(); // Stopwatch1 starten! uint16_t count = 0; // 100-Millisekunden Zähler while(true) { if(getStopwatch1() > 100) // 100ms = 0.1s { switch(count) { case 8: // 800ms setLEDs(0); break; case 8+8: // 1600ms setLEDs(63); break; case 8+8+8: // 2400ms setLEDs(0); break; case 8+8+8+8: // 3200ms setLEDs(63); count = 0; break; } count++; // 100-Millisekunden Zähler erhöhen setStopwatch1(0); } }
wenn man if-else lieber mag.Code:startStopwatch1(); // Stopwatch1 starten! uint16_t count = 0; // 100-Millisekunden Zähler while(true) { if(getStopwatch1() > 100) // 100ms = 0.1s { if(count==8) { setLEDs(0); } else if (count == 8+8) { setLEDs(63); } else if (count == 8+8+8) { setLEDs(0); } else if (count == 8+8+8+8) { setLEDs(63); count = 0; } count++; // 100-Millisekunden Zähler erhöhen setStopwatch1(0); } }
MfG,
SlyD







Zitieren
Lesezeichen