Ich habe einmal eine Frage, und zwar geht es mir darum eine Unwetter Simulation bei meinem Riffaquarium zu erstellen. Aber ich möchte diese nicht jeden Tag haben sondern nur an 4 Tagen im Monat,. das Unwetter läuft schon, lediglich die Einteilung der Tage muss ich noch fest legen. Da ich nicht so viel Ahnung vom Programmieren habe habe ich eine if abfrage gemacht und möchte gerne wissen ob das so geht oder ob ich was verkehrt mache. Gesteuert wird das über eine RTC DSF1307 . Der if CODE lautet:
Hallo, datum[ 2 ] ist das was aus dem RTC ausgelesen wird also die STD. , datum 2 ist die volle Stunde, das passt schon , datum [ 5 ] ist der Tag aus dem Datum wo es mir drum geht ist die zusammenstellung der IF Abfrage. die Zeichen && kenne ich gar nicht ich kenne nur and und or als abfrage. ich möchte gerne z.B. bei datum [ 7 ] das wäre der 7.Tag im Monat um 23 UHR das Unwetter laufen lassen. und das sollte 4 mal im Monat passieren, also am 7. 14. 21. und 28. Tag im Monat. ich habe es so eingegeben und die Software des Arduino meckert nicht.
Im Grunde ist es wie Mathematik, es gilt quasi punkt vor strich oder hier eben && vor ||..allerdings lassen sich mit klammern die Bedingungen und wie sie zusammengehören übersichtlicher darstellen.. In deinem Fall wäre das: (mit or = ||)
if((datum[5] == 7 && datum[2] == 23) || (datum[5] == 14 && datum[2] == 23) || (datum[5] == 21 && datum[2] == 23) || (datum[5] == 28 && datum[2] == 23))
(hier wärs auch ohne Klammern gegangen - also so wie du das hattest)
Oder etwas eleganter
if((datum[2] == 23) && (datum[5] == 7 || datum[5] == 14 || datum[5] == 21 || datum[5] == 28 ))
Hätte auch gepasst, die Symbole kannst du analog zu den verbalen Ausdrücken nutzen. && = and bzw. || = or
Für das Resultat spielts hier auf jeden Fall keine Rolle, ich wollts nur einheitlich gestalten.
Pass nur auf dass du || und nicht | schreibst. Einmal einen logischen Operator ist eine bitweise Verknüpfung. Zweimal ein logische. Das Problem damit ist dass dir die bitweise Verknüpfung natürlich das Ergebnis zurückgibt, wodurch der Code kompiliert aber eine völlig andere Funktion hat. Ein ähnliches Problem gibt es bei = und ==.