Sollte eigendlich gehen.. Poste mal deinen Code damit wir sehen was
Du falsch gemacht hast.
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.
MfG
Ruedi
Die minimalste Temperatur wird nicht angezeigt.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
Mfg
André
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
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 ...
MfG
Ruedi
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é
Lesezeichen