Timer programmieren



  • Hallo Leute,

    ich sitze grade dran einen etwas komplexen (zumindest für mich) Timer zu programmieren.
    Es handelt sich dabei um eine Zeitsteuerung für eine Automatisierung.
    Bisher war das so...
    Ein Timer z.B. 10-12 Uhr... Licht geht um 10 an und 12 aus.. !

    Jetzt soll allerdings eine Funktion eingebaut werden wo insgesamt 6 Timer zu verfügen stehen.
    z.B.
    Timer 1: 10-12
    Timer 2: 13-14
    Timer 3: 16-20
    usw.

    Diese Timer mit den Uhrzeiten werden alle in einer DB gespeichert um dann in dem Hauptprogramm abgerufen.

    Ich gehe nun die Timer 1 - 6 mit einer Schleife ab...
    In der Schleife frage ich, Uhrzeit = Timerzeit... dann Licht an, ansonsten Licht aus.
    Mit einem Timer hat es ja funktioniert. Nur wenn es 10 Uhr ist und Timer 1 das Licht einschaltet... Schaltet Timer 2 das licht wieder aus. weil die Bedienung False ist.. weil es ja NICHT 13-14 ist.

    Wie kann ich das am besten lösen? Gibt es für sowas evtl. fertige Libarys oder sowas?

    Danke



  • mitch_m schrieb:

    Bisher war das so...
    Ein Timer z.B. 10-12 Uhr... Licht geht um 10 an und 12 aus.. !

    Ich frage mich manchmal, wieso Leute davon ausgehen, dass sie Programme schreiben können, wenn sie doch bereits bei der Zeichensetzung in ihrer Muttersprache versagen.

    mitch_m schrieb:

    Jetzt soll allerdings eine Funktion eingebaut werden wo insgesamt 6 Timer zu verfügen stehen.

    Was hat deine Frage mit C zu tun? Ja, vielleicht schreibst du deinen Code in C, aber das ist doch kein C-Problem, sondern ein Logikproblem. Du hast X Zeitscheiben, die definieren, wann ein Licht aktiviert werden soll.

    Also holst du dir die jetzige Zeit und gehst alle Scheiben durch, um zu prüfen, ob irgendeine davon zu deiner jetzigen Uhrzeit passt. Wenn ja, kann das Licht eingeschaltet werden bzw. bleiben. Wenn nicht, kann es ausgeschaltet werden/bleiben.

    mitch_m schrieb:

    Wie kann ich das am besten lösen? Gibt es für sowas evtl. fertige Libarys oder sowas?

    Das ist ein Trend, den ich immer wieder beobachte.
    "Ich kapiere Aufgabenstellung X nicht, aber da draußen gibt es doch bestimmt eine Library dafür".

    Und dann depubliziert irgendein Spinner ein 11-Zeilen-Paket, welches Text rechtsbündig formatiert, und dann funktionieren React und Babel auch nicht mehr.

    Und dann lacht man darüber, bis es echt so kommt ...



  • mitch_m schrieb:

    Ich gehe nun die Timer 1 - 6 mit einer Schleife ab...
    In der Schleife frage ich, Uhrzeit = Timerzeit... dann Licht an, ansonsten Licht aus.

    Das "ansonsten Licht aus" darfst du erst machen, wenn alle Bedingungen unwahr sind.



  • mitch_m schrieb:

    Wie kann ich das am besten lösen? Gibt es für sowas evtl. fertige Libarys oder sowas?

    Ist die Frage wirklich dein Ernst?! Lass das mit dem Programmieren sein und spiel mit Legosteinen.



  • mitch_m schrieb:

    Wie kann ich das am besten lösen?

    wenn uhrzeit = einschaltzeit -> licht an
    wenn uhrzeit = ausschaltzeit -> licht aus
    ansonsten -> gar nix



  • listener12345 schrieb:

    mitch_m schrieb:

    Wie kann ich das am besten lösen?

    wenn uhrzeit = einschaltzeit -> licht an
    wenn uhrzeit = ausschaltzeit -> licht aus
    ansonsten -> gar nix

    Dann bist du davon abhängig, dass du genau zu den Zeiten die Abfrage machst.
    Das gibt auch Probleme beim Programmstart.



  • listener12345 schrieb:

    mitch_m schrieb:

    Wie kann ich das am besten lösen?

    wenn uhrzeit = einschaltzeit -> licht an
    wenn uhrzeit = ausschaltzeit -> licht aus
    ansonsten -> gar nix

    nee, besser so:
    wenn uhrzeit >= einschaltzeit und licht aus -> licht ein
    wenn uhrzeit >= ausschaltzeit und licht ein -> licht aus

    mach ne state machine daraus. google nach dem begriff.

    btw: uhrzeit sollte ein absoluter wert sein, sekunden seit ???
    also nicht jeden tag neu starten, außer du willst tatsächlich jeden tag einen neustart.



  • fricky666 schrieb:

    wenn uhrzeit >= einschaltzeit und licht aus -> licht ein
    wenn uhrzeit >= ausschaltzeit und licht ein -> licht aus

    Der vorhergehende Satus ist hier egal.

    Wichtig ist nur, dass du nicht beim wennschaltest, sondern dir den neuen Status merkst.

    wenn uhrzeit >= einschaltzeit  -> neuerstatus = ein
    wenn uhrzeit >= ausschaltzeit  -> neuerstatus = aus
    ...
    setze licht auf neuerstatus
    

  • Mod

    DirkB schrieb:

    fricky666 schrieb:

    wenn uhrzeit >= einschaltzeit und licht aus -> licht ein
    wenn uhrzeit >= ausschaltzeit und licht ein -> licht aus

    Der vorhergehende Satus ist hier egal.

    Wichtig ist nur, dass du nicht beim wennschaltest, sondern dir den neuen Status merkst.

    wenn uhrzeit >= einschaltzeit  -> neuerstatus = ein
    wenn uhrzeit >= ausschaltzeit  -> neuerstatus = aus
    ...
    setze licht auf neuerstatus
    

    Kommt so ein bisschen auf den tatsächlichen technischen Hintergrund an, was hier besser ist, weniger auf die Gestaltung aus Informatiksicht. Wenn da ein tatsächlicher, physischer Einschalter dahinter steht, möchte man den vermutlich nicht andauernd von AN auf AN schalten.

    Das das alles aber bloß eine abstrakte Hausaufgabe ist, hat der Aufgabensteller vermutlich gar nicht an solche Dinge gedacht.


Anmelden zum Antworten