Also entweder:
Wobei hier dann ab ca. 3° 30 am Display steht, wenn ich mich recht entsinne.Code: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.
Oder diesen Teil:
Wobei hier dann im Negativen Bereich eine 3-stellige Zahl und keine negatvie Temperatur raus kommt...Code: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
Edit: Bild hier
"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![]()








Zitieren

Lesezeichen