meiner funktioniert garantiert auch, werden im Abstand von 500ms
aufgerufen, erst reset um die Messung auszulösen, dann 500ms später,
Daten abholen und umrechnen, so ergibt zB. 32°C den Wert 320.
Es werden 3 Leitungen abgefragt, kann auch auf eine begrenzt werden.
Der Grund für 3 war, kein Mensch kann bei 6 Sensoren (2x3) wissen,
welcher jetzt diese ganz spezielle 64Bit SerNr hat, bei 3 Leitungen/
Pins weiß ichs.
Der Ursprüngliche Code stammt nicht von mir, sondern ist von hier ausm
Forum.
Sub 1wire_reset ' 1Wire
RESET
For Ch = 1 To 3
A = Ch - 1
1wreset PinD , Ch
1wwrite &HCC , 1 , PinD , A
1wwrite &H44 , 1 , PinD , A
Next
End Sub
'******************************************************
Sub 1wire_read ' DS1820
readout
For Ch = 1 To 3
A = Ch - 1
1wreset PinD , A
1wwrite &HCC , 1 , PinD , A
1wwrite &HBE , 1 , PinD , A
Ds_read(1) = 1wread(9 , PinD , A )
1wreset PinD , A
If Flag.2 = 1 Then ' nur beim
Regeln alte Werte speichern
Lasttemp(ch) = Currenttemp(ch)
End If
Ds_temp1 = Ds_read(1) And 1
If Ds_temp1 = 1 Then Decr Ds_read(1)
Ds_temp1 = Makeint(ds_read(1) , Ds_read(2))
Ds_temp1 = Ds_temp1 * 50
Ds_temp1 = Ds_temp1 - 25
Ds_temp2 = Ds_read(8) - Ds_read(7)
Ds_temp2 = Ds_temp2 * 100
Ds_temp2 = Ds_temp2 / Ds_read(8)
Ds_temp1 = Ds_temp1 + Ds_temp2
Currenttemp(ch) = Ds_temp1 / 10
Next
End Sub
'******************************************************