Hi,

so wie ich deinen Code interpretiere, liest du nur 1 byte aus. Der Sensor liefert aber 2 Byte als Temperaturwert. Am besten das komplette Scratchpad auslesen (also 9 Byte einschließlich CRC).

Ich hab das so gemacht:

' ROM-Kommandos
Const DS_SEARCH_ROM = &hF0
Const DS_READ_ROM = &h33
Const DS_MATCH_ROM = &h55
Const DS_SKIP_ROM = &hCC
Const DS_APARL_SEARCH = &hEC

' Funktions-Kommandos
Const DS_CONVERT = &h44
Const DS_WRITE_SCRATCHPAD = &h4E
Const DS_READ_SCRATCHPAD = &hBE
Const DS_COPY_SCRATCHPAD = &h48
Const DS_RECALL = &hB8
Const DS_READ_POWER_SUPPLY = &hB4

Dim BusData(9)
Dim DSTemp as Integer at DSData(1) Overlay
Dim Temperatur as Single

1wreset pind , 4
1wwrite DS_SKIP_ROM , 1 , pind , 4
1wwrite DS_READ_SCRATCHPAD , 1 , PinD , 4
BusData(1) = 1wread(9 , PinD , 4) ' 9 Datenbyte ins Array laden
Waitms 800
1wreset pind , 4
1wwrite DS_SKIP_ROM , 1 , pind , 4
1wwrite DS_CONVERT , 1 , pind , 4

' Temperatur aus Array BusData lesen und umrechnen
Temperatur=DSTemp/2

Das Programm ist auf einen einzelnen Sensor am Bus ausgelegt (Skip Rom). Das kannste aber umschreiben für deine Zwecke.

Mitch.