- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 22

Thema: Alternative zu "Wait"-Befehl

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    54
    Beiträge
    765
    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! \/

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    23.07.2006
    Beiträge
    14
    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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    23.07.2006
    Beiträge
    14
    Sag mal, wie meinst du das mit Sekunde zwischenspeichern?
    Wie funktioniert die Alarmdauer-Regelung in der HAuptschleife?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    54
    Beiträge
    765
    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! \/

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    23.07.2006
    Beiträge
    14
    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.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    23.07.2006
    Beiträge
    14
    Ist nicht mehr nötig. Ich habs hinbekommen und zwar hab ich in der Sectic folgendes geschrieben:

    Code:
    Dim Alarm_dauer As Word
    Alarm_dauer = 0
    
    Do 
    .
    .
    .
    Loop 
    End
    
    Sectic:
       If PortB.1 = 1 Then Alarm_dauer = Alarm_dauer + 1
       If Alarm_dauer = 5 Then                                            ' Alarm dauert 5 Sekunden
       Reset PortB.1
       End If
    Return
    Vielen Dank für deinen Tip und schönen Sonntag dir...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test