Ja habe ich, nämich bei Config Dcf77 am Ende dieser Zeile steht bei mir Gosub = Sectic
Ist dann Alarmdauer eine neue Variable?
Anscheined schon, werds gleich mal ausprobieren...
Ja habe ich, nämich bei Config Dcf77 am Ende dieser Zeile steht bei mir Gosub = Sectic
Ist dann Alarmdauer eine neue Variable?
Anscheined schon, werds gleich mal ausprobieren...
Stimmt der folgende Code-Teil in deinen Augen?
Es funktioniert zwar, aber die Wecker-LED geht nach einer Sekunde wieder aus statt nach 3 Sekunden...Code:Dim Alarmdauer As Word Alarmdauer = 0 Config Portb.1 = Output ' Wecker Portb.1 = 1 ' Wecker Wecker Alias Portb.1 Do Loop End Sectic: If _hour = Alstd And _min = Almin Then Alarmdauer = 3 If Alarmdauer >= 1 Then Decr Alarmdauer Set Wecker Else Reset Wecker End If Return
Ist es ok, when ich _hour = Alstd And _min = Almin schreibe?
Ich frag deswegen, weil in deinem Code _hour und _min in eine Variable stecken...
Aber wenigstens ist der Hinweiß, dass das ganze auch in Sectic zu realisieren ist, ziemlich cool! Vielen Dank...
Geändert von mohi (31.03.2012 um 15:38 Uhr)
Womöglich wird die Sectic öfter in der Sekunde aufgerufen. Da in meinem Beispiel (wie auch von dir übernommen) die Alarmdauer auf 3 und dann gleich wieder auf eins weniger gesetzt werden, bleiben netto nur 2 Sekunden übrig. Du kannst es auch in der Hauptschleife erledigen, indem Du z.B. die Sekunde zwischenspeicherst und dann vergleichst. Ist diese anders, dann ist eine Sekunde vergangen. Möglichkeiten gibt es halt viele.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Möglichkeiten gibts es bestimmt viele, nur sind leider meine Möglichkeiten begrenzt, da ich Bascom-Neuling bin...
Dein Codebeispiel hat mir deshalb auch so gut gefallen, weil ich es verstanden habe
Hab eben die Alarmdauer auf 10 erhöht, leider bleibt die Alarm-LED trotzdem nur eine Sekunde an.
In dem Sectic-Bereich, also zwsichen Sectic und Return, ist nur eine Flagsetzung...
Lösche ich folgenden Code, bleibt die Alarm_LED nonstop an...
Code:If _hour = Alstd And _min = Almin Then Alarmdauer = 10 If Alarmdauer >= 1 Then Decr Alarmdauer Set Wecker Else Reset Wecker End If
Sag mal, wie meinst du das mit Sekunde zwischenspeichern?
Wie funktioniert die Alarmdauer-Regelung in der HAuptschleife?
Scheint, als ob irgendwas anderes passt nicht. Für eine bessere Aussage bräuchte ich mehr Code. Da du nur die Stunde und Minute vergleichst, müsste die ganze Minute über jede Sekunde Alarmdauer auf 3 gesetzt werden.
Die Sekunde zwischenspeichern geht ganz einfach:
Code:dim sekalt as byte ... ... do if sekalt<>_sec then sekalt=_sec gosub sekuendlich end if loop end sekuendlich: 'hier der Code rein, welcher nach jeder neuen Sekunde ausgeführt werden soll. z.B. gosub Uhranzeigen gosub Alarme gosub Menuetimer gosub beleuchtungstimer ... ... ... return
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Ja ich glaube dass das daran liegt, das in der Hauptschleife bereits der Wecker-Port (also die Weck-LED) genutzt wird...
Ich schick dir gleich mal ne PN.
Lesezeichen