Archiv verlassen und diese Seite im Standarddesign anzeigen : minimalste Temperatur anzeigen
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é
Sollte eigendlich gehen.. Poste mal deinen Code damit wir sehen was
Du falsch gemacht hast.
$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
nun egal wierum funktioniert beides nicht.
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
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 ...
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é
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.