-
        

+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Stopuhr fertig aber zeigt nur sekunden an!!!

  1. #1
    der noob
    Gast

    Stopuhr fertig aber zeigt nur sekunden an!!!

    Anzeige

    So ich habe mein prog fertig nur ich weiss nicht ganz genau wie ich das hinkriege wenn der zähler über 60sek. das er minuten anzeigt könnt ihr mir helfen!!

    '1. auslesen des CPU - timers
    '2.abfrage wenn "start-taste" gedrückt ist
    '3.starten des timer
    '4.abfrage wenn "Stop" gedrückt ist
    '5.Auslesen den neuen timers
    '6. neuen timer vom alten berechnen
    '7.Auslesen der egebnisse






    define port1 port[1]
    define port2 port[2]
    define port3 port[3]
    define starttimer word
    define stoptimer word

    #an
    Print "Zum einschalten Port2"
    wait port2 = on

    #anfang
    pause 5
    print "Stopuhr ist eingeschaltet"
    print "Starten mit port1"
    print "Stoppen mit port1"
    pause 5
    wait port1=on

    #tastestart
    pause 2
    if port1 = on then goto start

    #tastestop
    pause 2
    wait port1 = on
    goto ausgabe

    #ausgabe
    gosub stop
    print "Zeit="; stoptimer
    print "weiter mit port1"
    goto tastereset

    #tastereset
    pause 5
    wait port1 = on
    goto anfang

    #Start
    starttimer = timer
    print "Uhr läuft!"
    goto tastestop

    #stop
    stoptimer = (timer-starttimer) / 50
    return

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    Hi!
    Rechne es doch einfach um!?
    Wieviele Sekunden hat eine Minute, und wieviele Minuten hat eine Stunde? ;o) *lol*

  3. #3
    der noob2
    Gast
    Trotzdem kann ich das nicht!!!
    HILFE!°!°!°!°!°!°!°!°!°!

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    14.12.2003
    Alter
    26
    Beiträge
    1.187
    Was hat dir an meinem Program nicht gefallen... hat doch perfekt gefuntzt (wenn man im simulator die funktion uhr automatisch stellen oder so deaktiviert)

    Mach doch einfach nochne variable die dann das macht:

    if timer-starttimer=60 then minuten=minuten+1
    if timer-starttimer=60 then starttimer=timer

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    41
    Beiträge
    849
    Dein Timer hat 20ms-Schritte. Also 50 Schritte pro Sekunde. Nach 50*60 Schritten brauchst du eine Minutenumschaltung, also bei 3000. Da der Timer von -32000 bis ca. +32000 läuft und dann wieder nach -32000 springt, hast du maximal ca. 10 Minuten die du damit in 20ms Genauigkeit (eher schlechter) messen kannst.

    Der Timer ist aber freilaufend und kann so nicht auf einen Startwert gesetzt werden. Damit weist du nicht ob du am Ende oder dem Anfang deines Wertebereichs bist und o der Umsprung bald komt. Das muss man eben auch mit abfragen und eintsprechend verrechenen.

    xSek = Timer / 50
    xMin = Timer / 3000

    Grüsse Wolfgang

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    14.12.2003
    Alter
    26
    Beiträge
    1.187
    Oh, mist... hab ich ja ganz vergessen...

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    41
    Beiträge
    849
    Zitat Zitat von Matthias
    Was hat dir an meinem Program nicht gefallen... hat doch perfekt gefuntzt (wenn man im simulator die funktion uhr automatisch stellen oder so deaktiviert)

    Mach doch einfach nochne variable die dann das macht:

    if timer-starttimer=60 then minuten=minuten+1
    if timer-starttimer=60 then starttimer=timer
    So geht das nicht sicher

    Wenn der Timer in dem Moment erhöht in dem das Programm noch in der ersten Zeile ist, dann ist in der zweiten Zeile eine "61" und dem If alles so ziemlich gleichgültig...

    Also besser:

    ...
    If Timer - StartTimer < 3000 then GoTo IstKleinerMin
    Minuten = Minuten + 1
    ' Ende des Timers erreicht?!?
    If IstStartTimer < 32000 Then IstStarttimer = IstStarttimer + 3000
    #IstKleinerMin
    ...

    Dei 32000 ist der maximale Timerwert Minus 3000, da dort der Timer eh von vorne beginnt. Also darauf prüfen! Sonst ist mal Der IstStertTimer > Timer und es dauert ganze 11 Minuten bis eine Minute erkannt wird!

    Grüsse Wolfgang

+ Antworten

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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