PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : minimalste Temperatur anzeigen



OEP
24.01.2006, 11:28
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é

ruediw
24.01.2006, 12:12
Sollte eigendlich gehen.. Poste mal deinen Code damit wir sehen was
Du falsch gemacht hast.

OEP
24.01.2006, 12:43
$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é

CR-Racing
24.01.2006, 13:23
Es muß ja auch heißen Minimal=Temperatur

OEP
24.01.2006, 13:35
nun egal wierum funktioniert beides nicht.

Sommer
24.01.2006, 17:49
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

zwanzischmark
24.01.2006, 18:27
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

ruediw
24.01.2006, 19:25
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 ...

OEP
24.01.2006, 19:46
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é