Beides ist richtig, aber mein Sketch ist getestet und funktioniert.
Das sind einfach viele Short-If hintereinander ... nicht schick aber geht.
Ich sagte aber auch, die Array-Variante ist definitiv die beste Lösung!
Na ja, so einfach mit 6 Doppelpunkten natürlich nicht. ( Du könntest wie FlyingEagle 6 true/false Bedingungen verschachteln, wenn du unbedingt willst. )
Sinnvoller wäre sicher Tommys Vorschlag
const char* wtag[7] = {"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"};
...
byte wd = x%7; // 0.. 6, wird irgendwie je nach Wochentag gesetzt
Serial.print(wtag[wd]);
Ich hatte mal Lust die 3 Varianten gegeneinander zu prüfen.
Meine Variante aus Post 2:
Der Sketch verwendet 2236 Bytes (1%) des Programmspeicherplatzes. Das Maximum sind 130048 Bytes.
Globale Variablen verwenden 209 Bytes (1%) des dynamischen Speichers, 16175 Bytes für lokale Variablen verbleiben. Das Maximum sind 16384 Bytes.
uint8_t day = 0;
void setup()
{
Serial.begin(115200);
randomSeed(analogRead(0));
}
void loop()
{
Serial.print(day == 0 ? "SO" : \
day == 1 ? "MO" : \
day == 2 ? "DI" : \
day == 3 ? "MI" : \
day == 4 ? "DO" : \
day == 5 ? "FR" : "SA");
delay(1500);
day = random(7);
}
Tommys Variante aus Post 1:
Der Sketch verwendet 2230 Bytes (1%) des Programmspeicherplatzes. Das Maximum sind 130048 Bytes.
Globale Variablen verwenden 230 Bytes (1%) des dynamischen Speichers, 16154 Bytes für lokale Variablen verbleiben. Das Maximum sind 16384 Bytes.
Der Sketch verwendet 2176 Bytes (1%) des Programmspeicherplatzes. Das Maximum sind 130048 Bytes.
Globale Variablen verwenden 202 Bytes (1%) des dynamischen Speichers, 16182 Bytes für lokale Variablen verbleiben. Das Maximum sind 16384 Bytes.
Übrigens: Wenn man wirklich RAM sparen möchte, bleibt noch die Möglichkeit, "SoMoDiMiDoFrSa" in den Flash zu legen. ( 202 byte RAM -> 188 byte RAM )
Meine Variante verwendet übrigens kein Serial.print, was den Flash-Vergleich etwas verfälscht (zu meinen Gunsten).
Aber so ist das nunmal mit Benchmark-Tests. Im wahren Leben sind die Unterschiede meist geringer.
Und: wenn der Platz ausreichend ist, sollte man die Variante verwenden, die man am leichtesten lesen kann
(und nach einem halben Jahr noch versteht).
Denn so ist das nunmal mit Benchmark-Tests. Im wahren Leben sind die Unterschiede meist egal.
Mir ging es auch weniger um einen Benchmark, als vielmehr um das simple Interesse
a) ob wirklich alle 3 Methoden das gleiche bringen
b) und Flash/Ram-Verbrauch