-         

Ergebnis 1 bis 9 von 9

Thema: minimalste Temperatur anzeigen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2005
    Beiträge
    17

    minimalste Temperatur anzeigen

    Anzeige

    Hallo,
    wie kann ich die minimalste Temperatur, die herschte anzeigen lassen? Ich habe es mir so gedacht: Man setzt am Anfang des Programms zB. Minimal = Temperatur, dann wird mittels If-then-Anweisung im Programm überprüft, ob die Temperatur kleiner als Minimal ist, wenn ja dann wird wieder Minimal = Temperatur nur leider funktioniert das so nicht. Habt ihr einen Tipp für mich oder eine andere Lösung?

    Ich bedanke mich schon mal für die Antworten.

    Mfg
    André

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.12.2005
    Ort
    Tann / ZH
    Alter
    61
    Beiträge
    264
    Sollte eigendlich gehen.. Poste mal deinen Code damit wir sehen was
    Du falsch gemacht hast.
    MfG
    Ruedi

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2005
    Beiträge
    17
    Code:
    $regfile = "m8def.dat"
    $crystal = 16000000
    
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    
    Config 1wire = Portc.0
    
    
    Dim Ar(2) As Byte , I As Byte , Temperatur As Integer
    Dim Halb As Byte
    Dim Minimal As Integer
    
    
    Minimal = Temperatur
    
    
    
    Cls
    Lcd "Temp:"
    Locate 2 , 1
    Lcd "Min:"
    
    Do
    Waitms 300
    1wreset
    1wwrite &HCC
    1wwrite &H44
    Waitms 200
    1wreset
    1wwrite &HCC
    1wwrite &HBE F
    For I = 1 To 2
    Ar(i) = 1wread()
    Next
    
    Locate 1 , 7
    Temperatur = Ar(1)
    
    If Ar(2) > 0 Then Temperatur = 0 Else Shift Temperatur , Right
    
    Lcd Temperatur ; ".";
    
    Halb = Ar(1) And 1
    
    If Halb = 1 Then Lcd "5" Else Lcd "0"
    
    Lcd " " ; Chr(223) ; "C" ; "           "
    
    If Temperatur < Minimal Then
    
       Temperatur = Minimal
    
       Locate 2 , 6
       Lcd Minimal
    End If
    
    
    Loop
    
    End
    Die minimalste Temperatur wird nicht angezeigt.

    Mfg
    André

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    27.01.2005
    Ort
    München
    Beiträge
    20
    Es muß ja auch heißen Minimal=Temperatur

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2005
    Beiträge
    17
    nun egal wierum funktioniert beides nicht.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    Hi,

    du musst vergleichen !
    Du musst den neuen mit den zuletzt gespeicherten Wert vergleichen.
    Wenn dieser > -x ist dann musst du diesen als maxPeek übernehemen.

    Bye Ulli

  7. #7
    zwanzischmark
    Gast
    hi,

    in der ersten Programmzeile schreibst du

    Minimal = Temperatur

    da Temperatur am Anfang keinen Wert hat also 0 ist wird Minimal auch 0 und da du unten den Minimalwert nur ausgibst wenn er unterboten wird, wird dein Wert nie Ausgegeben wenn deine die Aktuelle Temperatur >= 0°C ist

    mfg Paul

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.12.2005
    Ort
    Tann / ZH
    Alter
    61
    Beiträge
    264
    Mein Vorposter hat es richtig erklärt.
    Mit dem Deklarieren von Variablen ist es eben nicht gemacht.
    Man sollte sie auch auf einen vernünftigen Wert initialisieren...

    Es gbt noch eine andere Lösung:
    1. Ein globales Flag setzen und auf True setzen:
    z.Bsp: ErsteMessung = True
    2. Bei der Messung prüfen ob das Flag gesetz ist und wenn ja (true) dann
    folgendes machen:
    1.Minimale Temperatur und falls vorhanden Max. Temperatur mit dem aktuellen wert setzen. Danach das Flag auf False setzen.

    Bei der nun folgenden messung nun den Vergleich machen:

    Kann kein Basic aber poste mal wie das so in Pascal aussehen würde:

    Var
    MinTemp, MaxTemp : Real; { für Min. + Max. Temperatur }
    Temp : Real; { für aktuelle Temperatur }
    FirstRead : Boolean; { globales Flag }

    FirstRead := True; { Initialisieren }
    .... { weiterer Code }
    Temp := ReadTemp; { 1. Messung }
    IF (FirstRead = True) Then
    Begin { 1. Messung }
    MinTemp := Temp;
    MaxTemp := Temp;
    FirstRead := False; { Flag löschen }
    End
    Else
    Begin { 2, 3, 4, .... Messung }
    If (Temp < MinTemp) Then MinTemp := Temp;
    If (Temp > MaxTemp) Then MaxTemp := Temp;
    End;

    So etwas hätte ich mir vorgestellt ...
    MfG
    Ruedi

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2005
    Beiträge
    17
    Hallo,

    genau das wars. Nachdem ich der Variablen Minimal einen Wert zugewiesen habe. und die If-then-Ánweisung geändert habe funktionierts nun.

    Ich Danke euch.

    Mfg
    André

Berechtigungen

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