Archiv verlassen und diese Seite im Standarddesign anzeigen : DS18S20 Seriennr. am LCD ausgeben?
Hallo allerseits!
Wollte mal kurz fragen, ob jemand bereit ist, mir zu sagen wie ich die Seriennummer eines DS18S20 auslese und anschliessend am LCD ausgebe?
Habe bereits die Seite im Wiki hier glesen, aber ich bekomms nicht hin, das ganze dann am LCD auszugeben.
MfG,
Maxxtro
Hier ein Link der weiterhilft:
http://mikrocontroller.jacob-pirna.de/1wire_bascom_ds1820.html
Da kannst du ein Beispielprog. zu Ermittlung der Adresse Downloaden.
Ich hoffe das dir das weiterhilft
Gruß
Neutro
Hier gibt es so viele Beiträge zum Thema DS18x20, da ist bestimmt etwas dabei.
Wenn du schon etwas versucht hast, dann zeig das doch mal.
Gruß
Rolf
So, eine der Seriennummern ist jetzt z.B. 10994E710108006D.
Nun ist in einem der Codes auf der von Neutro geposteten Seite die Zeile
' Die Adresse meines DS1820 die ich vorher ermittelt habe
Dsid(1) = &H10 : Dsid(2) = &H68 : Dsid(3) = &H17 : Dsid(4) = &H25 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H98
Die weitere Ansteuerung über diese zugewiesenen Nummern scheint mir logisch; aber wie kommt man auf z.B. &H10 usw? Ich sehe dorten keinen zusammenhang zwischen der Seriennr. und diesen Anweisungen?
MfG
So, eine der Seriennummern ist jetzt z.B. 10994E710108006D.
Nun ist in einem der Codes auf der von Neutro geposteten Seite die Zeile
' Die Adresse meines DS1820 die ich vorher ermittelt habe
Dsid(1) = &H10
Dsid(2) = &H68
Dsid(3) = &H17
Dsid(4) = &H25
Dsid(5) = &H01
Dsid(6) = &H08
Dsid(7) = &H00
Dsid(8) = &H98
Na ja, deine ist dann
Dsid(1) = &H10
Dsid(2) = &H99
Dsid(3) = &H4E
Dsid(4) = &H71
Dsid(5) = &H01
Dsid(6) = &H08
Dsid(7) = &H00
Dsid(8) = &H6D
Oder was meinst du?
Also, ich habe ja jetzt die Seriennummern meiner DS1820s.
Nun möchte ich die ja einzeln ansteuren.
Dazu brauche ich ja die jeweilgen Adressen bzw. Nummern der einzelnen Sensoren?!
Nur wie komme ich an die? Das wollte ich wissen.
Wie kommst Du auf diese nummern? Diese ganzen Dsid(1), Dsid(2),... sind also allesamt nur ein DS1820?
Falls ja, wie schreibe ich dann mehrere in die Liste?
Ja, das ist ein einziger Sensor. Da ist der Typ und andere Angaben drin verschlüsselt. Alle 64bit zusammen sind die eindeutige Seriennummer.
Du kannst die Nummern z.B. im EEPROM abspeichern und bei Bedarf wieder von dort einlesen. Das kann vor jeder Messung sein (das braucht etwas Zeit) oder alle beim Start in ein Array ablegen (das braucht etwas SRAM), wie das in dem Beispiel wohl gemacht ist.
Es könnte auch sein, das dort die Nummern alle direkt im Programm angegeben sind, dann hast du dir auch das Einlesen aus dem EEprom gespart.
Gruß
Rolf
Im Programm sieht das dann so aus:
Dim Dsid(16) As Byte 'Platz für 2 Sensoren
Dsid(1) = &H10 : Dsid(2) = &H68 : Dsid(3) = &H17 : Dsid(4) = &H25 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H98 'erster Sensor (aus dem Beispiel)
Dsid(9) = &H10 : Dsid(10) = &H99 : Dsid(11) = &H4E : Dsid(12) = &H71 : Dsid(13) = &H01 : Dsid(14) = &H08 : Dsid(15) = &H00 : Dsid(16) = &H6D 'zweiter Sensor (deine Nummer 10994E710108006D)
1wreset
1wwrite Match_rom
1wwrite Dsid(1) , 8 'bzw 1wwrite Dsid(9) , 8 für den zweiten
1wwrite Read_scratchpad
Gruß
Rolf
Vielen Dank Rolf! Soweit hauts jetzt hin!
Hab nur noch ein Problem mit der Temperatur selber; entweder unter 0° bekomme ich eine 3-stellige Zahl, oder negative temperaturen werden ordentlich angezeigt, aber ab ca. 3° - 0° wird mir nicht mehr z.B. 3,0° sondern 30 angezeigt... :-k
Wie sieht dein Programm denn jetzt aus?
gruß
Rolf
Also entweder:
Dim Dsid(24) As Byte
' Die Adresse meines DS1820 die ich vorher ermittelt habe
Dsid(1) = &H10 : Dsid(2) = &H99 : Dsid(3) = &H4E : Dsid(4) = &H71 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H6D
'^= 1
Dsid(9) = &H10 : Dsid(10) = &H3D : Dsid(11) = &H48 : Dsid(12) = &H71 : Dsid(13) = &H01 : Dsid(14) = &H08 : Dsid(15) = &H00 : Dsid(16) = &H71
'^= 2
Dsid(17) = &H10 : Dsid(18) = &H4D : Dsid(19) = &H47 : Dsid(20) = &H71 : Dsid(21) = &H01 : Dsid(22) = &H08 : Dsid(23) = &H00 : Dsid(24) = &H86
'^= 3
Dim Sc(9) As Byte
Dim Sc2(9) As Byte
Dim T As Integer
Dim T1 As Integer
Dim I As Byte
Dim Halb As Byte
Dim Halb2 As Byte
Dim Ds1820 As Byte
Dim Ds1820_2 As Byte
Cursor Off
Do
' Alle angeschlossenen DS1820 zum Messen veranlassen
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
' Den gewünschten Sensor auswählen
1wverify Dsid(1)
' Kommando READ SCRATCHPAD
1wwrite &HBE
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
T = Makeint(sc(1) , Sc(2))
' Die Nachkommastelle entfernen
T = T / 2
' Temperatur in ganzen Grad Schritten ausgeben
Locate 1 , 1
Lcd "T1: " ; T ;
End If
' Ausgabe alle 0,75 Sekunden
Waitms 750
'usw... für 3 Sensoren.
Wobei hier dann ab ca. 3° 30 am Display steht, wenn ich mich recht entsinne.
Oder diesen Teil:
Dim Dsid(24) As Byte
' Die Adresse meines DS1820 die ich vorher ermittelt habe
Dsid(1) = &H10 : Dsid(2) = &H99 : Dsid(3) = &H4E : Dsid(4) = &H71 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H6D
'^= 1
Dsid(9) = &H10 : Dsid(10) = &H3D : Dsid(11) = &H48 : Dsid(12) = &H71 : Dsid(13) = &H01 : Dsid(14) = &H08 : Dsid(15) = &H00 : Dsid(16) = &H71
'^= 2
Dsid(17) = &H10 : Dsid(18) = &H4D : Dsid(19) = &H47 : Dsid(20) = &H71 : Dsid(21) = &H01 : Dsid(22) = &H08 : Dsid(23) = &H00 : Dsid(24) = &H86
'^= 3
Dim Sc(9) As Byte
Dim Sc2(9) As Byte
Dim T As Integer
Dim T1 As Integer
Dim I As Byte
Dim Halb As Byte
Dim Halb2 As Byte
Dim Ds1820 As Byte
Dim Ds1820_2 As Byte
Cursor Off
Do
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 700
1wreset
1wverify Dsid(9)
1wwrite &HBE
Ds1820 = 1wread(9)
Locate 4 , 1
Lcd Ds1820
1wreset
Halb = Ds1820 And 1
Locate 2 , 1
Shift Ds1820 , Right
If Ds1820 > 127 Then
Lcd "-"
Ds1820 = 256 - Ds1820
If Halb = 1 Then Ds1820 = Ds1820 - 1
Else
Lcd " "
End If
Lcd Ds1820 ; ".";
If Halb = 1 Then
Lcd "5"
Else
Lcd "0"
End If
Lcd "C "
Waitms 700
'usw...
Loop
Wobei hier dann im Negativen Bereich eine 3-stellige Zahl und keine negatvie Temperatur raus kommt... :-k
Edit: http://s11.directupload.net/images/090222/bczymorr.jpg
"T1" ist jetzt mal zu vernachlässigen und mit 1. Code gschrieben.
Die "Temperatur" in der zweiten Zeile ist die, die ich mit dem 2. Code programmiert habe (sie ist negativ!) und der Wert ganz unten ist "Ds1820"
Wenn er jetzt also 256 - Ds1820 rechnen würde, würde wohl auch die richtige Temperatur heraus kommen, nur scheint es mir, als würde er die If-Schleife nicht richtig ausführen; 1. rechnet er anscheinend nicht 256 - Ds1820 und 2. zeigt er auch ein keinster Weise ein "-" an :-k
Ich habe dir mal den 1. Code so abgeändert, wie ich denke dass er laufen müsste. Kann ich aber nicht ausprobieren.
Dim Dsid(24) As Byte
' Die Adresse meines DS1820 die ich vorher ermittelt habe
Dsid(1) = &H10 : Dsid(2) = &H99 : Dsid(3) = &H4E : Dsid(4) = &H71 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H6D
'^= 1
Dsid(9) = &H10 : Dsid(10) = &H3D : Dsid(11) = &H48 : Dsid(12) = &H71 : Dsid(13) = &H01 : Dsid(14) = &H08 : Dsid(15) = &H00 : Dsid(16) = &H71
'^= 2
Dsid(17) = &H10 : Dsid(18) = &H4D : Dsid(19) = &H47 : Dsid(20) = &H71 : Dsid(21) = &H01 : Dsid(22) = &H08 : Dsid(23) = &H00 : Dsid(24) = &H86
'^= 3
Dim Sc(9) As Byte
Dim Sc2(9) As Byte
Dim T As Byte 'kein Integer mehr
Dim T1 As Integer
Dim I As Byte
Dim Halb As Byte
Dim Halb2 As Byte
Dim Ds1820 As Byte
Dim Ds1820_2 As Byte
Cursor Off
Do
' Alle angeschlossenen DS1820 zum Messen veranlassen
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
' Den gewünschten Sensor auswählen
1wverify Dsid(1)
' Kommando READ SCRATCHPAD
1wwrite &HBE
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
T = Sc(1)
If Sc(2) > 0 Then
Print "-";
T = 256 - T
End If
T = T / 2
locate 1,1
If Sc(2) > 0 Then lcd "-";
lcd T ;
If Sc(1).0 = 1 Then
lcd ".5°C"
Else
lcd ".0°C"
End If
End If
' Ausgabe alle 0,75 Sekunden
Waitms 750
'usw... für 3 Sensoren.
loop
Probier es mal aus.
Funktioniet leider (gar) nicht :-k
MfG
Funktioniet leider (gar) nicht :-k
MfG
Also keine Ausgabe auf dem Display?
Wie sieht denn dein Code drumherum aus, dein 1. Beispiel ist ja bestimmt nicht komplett.
Ich habe nur die Zeilen ersetzt, die T berechnen. Den Rest musst du wieder dabei tun.
Durch die 1wire Befehle kann man das schlecht durch den Simulator laufen lassen. Ich muss die dann alle durch Pseudobefehle ersetzen.
Gruß
Rolf
Nein, keine Ausgabe auf dem Display...
$regfile = "m32def.dat"
$crystal = 16000000
' LCD konfigurieren Port auf Ausgabe setzten und Pin's entsprechend zuordnen
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 4
Config Lcdbus = 4
Config Portd.0 = Output 'bloß für meine displaybeleuchtung
Portd.0 = 1
' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von BASCOM durch Software realisiert
Config 1wire = Portd.7
Dim Dsid(24) As Byte
' Die Adresse meines DS1820 die ich vorher ermittelt habe
Dsid(1) = &H10 : Dsid(2) = &H99 : Dsid(3) = &H4E : Dsid(4) = &H71 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H6D
'^= 1
Dsid(9) = &H10 : Dsid(10) = &H3D : Dsid(11) = &H48 : Dsid(12) = &H71 : Dsid(13) = &H01 : Dsid(14) = &H08 : Dsid(15) = &H00 : Dsid(16) = &H71
'^= 2
Dsid(17) = &H10 : Dsid(18) = &H4D : Dsid(19) = &H47 : Dsid(20) = &H71 : Dsid(21) = &H01 : Dsid(22) = &H08 : Dsid(23) = &H00 : Dsid(24) = &H86
'^= 3
Dim Sc(9) As Byte
Dim Sc2(9) As Byte
Dim T As Integer
Dim T1 As Integer
Dim I As Byte
Dim Halb As Byte
Dim Halb2 As Byte
Dim Ds1820 As Byte
Dim Ds1820_2 As Byte
Cursor Off
Do
' Alle angeschlossenen DS1820 zum Messen veranlassen
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
' Den gewünschten Sensor auswählen
1wverify Dsid(1)
' Kommando READ SCRATCHPAD
1wwrite &HBE
Sc(1) = 1wread(1)
If Sc(9) = Crc8(sc(1) , 8) Then
T = Sc(1)
If Sc(2) > 0 Then
Lcd "-";
T = 256 - T
End If
T = T / 2
Locate 1 , 1
If Sc(2) > 0 Then Lcd "-";
Lcd T ;
If Sc(1).0 = 1 Then
Lcd ".5°C"
Else
Lcd ".0°C"
End If
End If
' Ausgabe alle 0,75 Sekunden
Waitms 750
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wverify Dsid(9)
1wwrite &HBE
Ds1820 = 1wread(9)
Locate 4 , 1
Lcd Ds1820
1wreset
Halb = Ds1820 And 1
Shift Ds1820 , Right
If Ds1820 > 127 Then
Ds1820_2 = 256 - Ds1820
Else
Ds1820_2 = Ds1820
End If
If Halb = 1 Then
Ds1820_2 = Ds1820_2 - 1
End If
Locate 3 , 1
Lcd Ds1820_2 ; ".";
If Halb = 1 Then
Lcd "5"
Else
Lcd "0"
End If
Lcd "C "
Waitms 700
Loop
End
Mit dem 2. Teil des Codes habe ich wie gesagt das Problem unter 0°, aber wenigstens ne Anzeige... :-k
Wiese steht denn beim ersten Sensor
Sc(1) = 1wread(1)
da muss wie unten auch
Sc(1) = 1wread(9)
sonst liest der keine CRC ein und die Abfrage geht schief.
Gruß
Rolf
Gute Frage... wahrscheinlich dachte ich bei dem 9er unten dass oben wegen dem 1. Sensor ein 1er hin muss :-b
Nun, jetzt funktionierts! Sowohl im + als auch im - Bereich bekomme ich ne vernünftige Temperatur angezeigt! Danke! Mal schaun wie weit ich jetzt allein komme :mrgreen:
MfG
So, noch mal ned Frage zur Temperatrumessung ](*,)
If T > H Then Set Flag
If Flag = 1 Then
If Sc(1).0 = 1 Then
X = T + 1
Else
X = T
End If
Eram_h = X
H = Eram_h
Reset Flag
End If
If T2 > H Then Set Flag
If Flag = 1 Then
If Sc2(1).0 = 1 Then
X = T2 + 1
Else
X = T2
End If
Eram_h = X
H = Eram_h
Reset Flag
End If
Diese beiden Dinger waren zum feststellen und speichern von Höchstwerten; passt so weit auch. (Je ein Abschnitt für einen Sensor)
Jetzt habe ich bei beiden
"If Sc2(1).0 = 1 Then
X = T2 + 1
Else
X = T2
End If"
eingefügt, um bei ,5° aufzurunden.
Komischer weise funktioniert das bei Sensor 2 bzw. T2, nicht aber bei Sensor 1! Beim ersten wird der höchstwert zwar nach wie vor gespeichert, aber nicht aufgerundet.
Woran liegt das, wo beide male doch genau das selbe passiert (passieren soll)?
Ist denn die Temperatur an Sensor T sicher größer als H?
Ansonsten ist dein Flag nicht gesetzt und die Änderung von T wird nicht durchgeführt.
Wie oft führt er diesen Teil eigentlich aus? Da ist ein Befehl drin, der nach EEProm schreiben aussieht. Das sollte sicherlich nicht jede Sekunde stattfinden, selbst bei einer Minute ist das EEProm nach 2 Monaten nicht mehr beschreibbar.
Gruß
Rolf
Der Befehl wird so zu sagen "jede Sekunde" ausgeführt und er schreibt in den EEPROM, allerdings nur, wenn die Temperatur größer als alle Temperaturen zuvor ist! Und das sollte ja nicht all zu oft vorkommen O:)
Und gelesen wird der Wert im EEPROM bei jedem einschalten, das sollte okay sein, oder? :-k
Aber T ist größer als H; das erkennen und speichern der Höchstwerte funktioniert ja sowieso, aber das mit ,5° haut nicht hin!
Es wird bei ,5° also das ,5 einfach abgeschnitten und der Wert nicht aufgrundet!
Mit T2 funktioniert das ja ganz genau so und ohne Probleme?!
Aber T ist größer als H; das erkennen und speichern der Höchstwerte funktioniert ja sowieso, aber das mit ,5° haut nicht hin!
Ich dachte nur, weil beide Sensoren gegen H vergleichen. Der erste, der einen größeren Wert hat, wird dafür sorgen, dass der andere nicht mehr sein Flag gesetzt bekommt. Sieht für mich etwas seltsam aus.
Gruß
Rolf
Ja aber sobald der eine seinen Höchstwert in den EEPROM geschrieben hat, wird Flag ja zurückgesetzt und der andere könnte rein theoretisch seinen Höchstwert schreiben, was allerdings eher selten vorkommen wird, da wohl so gut wie immer der gleiche der beiden Sensoren die höhere Temperatur haben wird... 8-[
Ich verstehe deinen Punkt nicht.
Du sagst, dass es ok ist, wenn immer der gleiche Sensor (evtl. T2) den Max-Wert setzt. Vorm wegspeichern wird er gerundet. Ok.
Woher weißt du, dass es bei dem anderen (T) nicht geht, wenn er nie den höchsten Wert hat, wird er auch nicht gerundet. Du kannst den gespeicherten Wert von T doch gar nicht von dem von T2 unterscheiden!
Weil ich bis jetzt noch beide Sensoren hier habe und beide einzeln erwärmen kann! Und wenn T(1) jetzt einen neuen Höchstwert erreicht wird der Wert eben leider nicht aufgrundet :-k
ich sehe halt - wohl ebenso wie du - keinen Unterschied zwischen den beiden Teilen. Wenn es sich dennoch anders verhält, muss es etwas mit der Umgebung zu tun haben.
Zeig doch mal dein komplettes Programm. Vielleicht ist da ja noch etwas versteckt.
Gruß
Rolf
$regfile = "m32def.dat"
$crystal = 16000000
' LCD konfigurieren Port auf Ausgabe setzten und Pin's entsprechend zuordnen
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 4
Config Lcdbus = 4
Config Portd.0 = Output
Portd.0 = 1
Deflcdchar 1 , 8 , 20 , 8 , 32 , 32 , 32 , 32 , 32
Cursor Off
' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von BASCOM durch Software realisiert
Config 1wire = Portd.7
Dim Dsid(24) As Byte
' Die Adresse meines DS1820 die ich vorher ermittelt habe
Dsid(1) = &H10 : Dsid(2) = &H99 : Dsid(3) = &H4E : Dsid(4) = &H71 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H6D
'^= 1
Dsid(9) = &H10 : Dsid(10) = &H3D : Dsid(11) = &H48 : Dsid(12) = &H71 : Dsid(13) = &H01 : Dsid(14) = &H08 : Dsid(15) = &H00 : Dsid(16) = &H71
'^= 2
Dsid(17) = &H10 : Dsid(18) = &H4D : Dsid(19) = &H47 : Dsid(20) = &H71 : Dsid(21) = &H01 : Dsid(22) = &H08 : Dsid(23) = &H00 : Dsid(24) = &H86
'^= 3
Dim Sc(9) As Byte
Dim Sc2(9) As Byte
Dim Sc3(9) As Byte
Dim T As Byte
Dim T2 As Byte
Dim T3 As Byte
Dim H As Long
Dim Flag As Bit
Dim Eram_h As Eram Long
Dim X As Long
H = Eram_h
Dim M As Long
Dim Flag2 As Bit
Dim Eram_m As Eram Long
Dim Y As Long
M = Eram_m
Dim Flag3 As Bit
Dim Flag4 As Bit
Do
Wait 1
' Alle angeschlossenen DS1820 zum Messen veranlassen
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
' Den gewünschten Sensor auswählen
1wverify Dsid(1)
' Kommando READ SCRATCHPAD
1wwrite &HBE
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
T = Sc(1)
If Sc(2) > 0 Then
T = 256 - T
End If
T = T / 2
Locate 1 , 1
Lcd "T:"
If Sc(2) > 0 Then Lcd "-";
Lcd T;
If Sc(1).0 = 1 Then
Lcd ".5" ; Chr(1) ; " / "
Else
Lcd ".0" ; Chr(1) ; " / "
End If
End If
Waitms 1
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
' Den gewünschten Sensor auswählen
1wverify Dsid(9)
' Kommando READ SCRATCHPAD
1wwrite &HBE
Sc2(1) = 1wread(9)
If Sc2(9) = Crc8(sc2(1) , 8) Then
T2 = Sc2(1)
If Sc2(2) > 0 Then
T2 = 256 - T2
End If
T2 = T2 / 2
Locate 1 , 11
If Sc2(2) > 0 Then Lcd "-";
Lcd T2 ;
If Sc2(1).0 = 1 Then
Lcd ".5" ; Chr(1)
Else
Lcd ".0" ; Chr(1)
End If
End If
' Ausgabe alle 0,75 Sekunden
Waitms 1
If T > H Then Set Flag
If Flag = 1 Then
If Sc(1).0 = 1 Then
X = T + 1
Else
X = T
End If
Eram_h = X
H = Eram_h
Reset Flag
End If
If T2 > H Then Set Flag
If Flag = 1 Then
If Sc2(1).0 = 1 Then
X = T2 + 1
Else
X = T2
End If
Eram_h = X
H = Eram_h
Reset Flag
End If
If Sc(2) > 0 Then
If T > M Then
Set Flag2
If Flag2 = 1 Then
Y = T
Eram_m = Y
M = Eram_m
Reset Flag2
End If
End If
End If
If Sc2(2) > 0 Then
If T2 > M Then
Set Flag4
If Flag4 = 1 Then
Y = T2
Eram_m = Y
M = Eram_m
Reset Flag4
End If
End If
End If
Locate 4 , 1
Lcd "max." ; H ; Chr(1)
Locate 4 , 9
Lcd "min.-" ; M ; Chr(1)
Loop
End
Ok, ich gebe auf. Ich sehe keinen Unterschied. Wo wird das runden eigentlich nicht gezeigt, ganz unten bei LCD "max." ...?
Jetzt kannst du noch die Stack- und Framewerte hochsetzen, falls er sich da irgendwie verschluckt. Die sind im Programm nicht angegeben.
Gruß
Rolf
Ja, unten bei max. wird der Wert mit abgeschnittener Kommazahl angezeigt...
Ich probiers mal mit Stack und Framewerten... :mrgreen:
Edit: Probiert - bringt auch nix :-k
Hallo!
Schau Dir nochmal Deine LCD Ausgabe an!
Zähl mal nach und überlege!
Das kann sich doch so wohl nicht ausgehen, oder ?
Mit freundliche Grüßen
Rone
Was soll sich da denn bitte nicht ausgehen können?! :-s
Du meinst "Locate 4 , 9"? Nun, wenn die Minimaltemperatur in den 2-stelligen Bereich gehen sollte, dann würde wohl das °-Zeichen wegfallen... aber was hat das mit meinem Problem zu tun?
Oder meinst Du etwas anderes?
MfG,
Maxxtro
So, Problem gelöst indem ich eine extra Flag und extra Variablen für T2 benutze...
Neues Problem:
If Sc(2) > 0 Then
If T > M Then Set Flag3
If Flag3 = 1 Then
If Sc(1).0 = 1 Then
X = T + 1
Else
X = T
End If
Eram_m = X
M = Eram_m
Reset Flag3
End If
End If
Das wäre das gleiche, nur diesmal für den negativen Bereich; wieder gleiches Problem ](*,)
Variablen alle nur einmal vergeben; restlicher Code bis eben auf die hinzugefügten Variablen der gleiche!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.