-
-
Erfahrener Benutzer
Fleißiges Mitglied
So funktioniert's!
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.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen