logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak odczytać unikalne ID dla 3 czujników DS18B20 w Bascom?

rufuse 17 Maj 2007 19:13 900 0
REKLAMA
  • #1 3894860
    rufuse
    Poziom 15  
    Posty: 192
    Pomógł: 7
    Ocena: 4
    Witam wszystkich przeczytałem wiekszość postów ale jakoś nie moge znaleść rozwiazania na swoj problem a mianowicie chodzi o odczyt ID wklejam program

    $large
    Cursor Off
    Cls
    Config Lcd = 16 * 2
    Config 1wire = P1.0
    Dim T1 As Single
    Dim T2 As Single
    Dim B1 As Byte , B2 As Byte , R As Byte , B3 As Byte , B4 As Byte
    Dim Tmp As String * 6
    Dim Znak As String *6
    Dim W As Word
    Dim Ar(8) As Byte , I As Byte
    Dim Dsid1(8) As Byte
    Dim Dsid2(8) As Byte
    Dim Dsid3(8) As Byte
    R = &HFF
    Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32
    W = 1wirecount(ar(1))
    Lcd "ERR=" ; Err ; " przy " ; W ; " urządzeniach."
    Wait 2
    Cls
    Dsid1(1) = 1wsearchfirst()
    For I = 1 To 8
    Lcd Dsid1(i);
    Next I
    Wait 2
    Cls
    Dsid2(1) = 1wsearchnext()
    For I = 1 To 8
    Lcd Dsid2(i);
    Next I
    Wait 2
    Cls
    Dsid3(1) = 1wsearchnext() //w tym miejscu pokazuje mi numer // pierwszego wykrytego
    For I = 1 To 8
    Lcd Dsid3(i);
    Next I
    Wait 2
    Cls
    Do
    1wreset
    1wwrite &H55
    1wwrite Dsid1(1) , 8
    1wwrite &H44
    Waitms 50
    1wreset
    1wwrite &H55
    1wwrite Dsid1(1) , 8
    1wwrite &HBE

    B1 = 1wread()
    B2 = 1wread()

    If B2 >= 248 Then
    B1 = R - B1
    B2 = R - B2
    Znak = "-"
    Else
    Znak = "+"
    End If
    T1 = B1 / 16
    T2 = B2 * 16
    T1 = T1 + T2
    Tmp = Fusing(t1 , ###.&&)
    Locate 1 , 1
    Lcd Znak ; Tmp ; Chr(1) ; "C "

    1wreset
    1wwrite &H55
    1wwrite Dsid2(1) , 8
    1wwrite &H44
    Waitms 50
    1wreset
    1wwrite &H55
    1wwrite Dsid2(1) , 8
    1wwrite &HBE

    B3 = 1wread()
    B4 = 1wread()

    If B4 >= 248 Then
    B3 = R - B3
    B4 = R - B4
    Znak = "-"
    Else
    Znak = "+"
    End If
    T1 = B3 / 16
    T2 = B4 * 16
    T1 = T1 + T2
    Tmp = Fusing(t1 , ###.&&)
    Locate 1 , 9
    Lcd Znak ; Tmp ; Chr(1) ; "C "

    1wreset
    1wwrite &H55
    1wwrite Dsid3(1) , 8
    1wwrite &H44
    Waitms 50
    1wreset
    1wwrite &H55
    1wwrite Dsid3(1) , 8
    1wwrite &HBE

    B3 = 1wread()
    B4 = 1wread()

    If B4 >= 248 Then
    B3 = R - B3
    B4 = R - B4
    Znak = "-"
    Else
    Znak = "+"
    End If
    T1 = B3 / 16
    T2 = B4 * 16
    T1 = T1 + T2
    Tmp = Fusing(t1 , ###.&&)
    Locate 2 , 1
    Lcd Znak ; Tmp ; Chr(1) ; "C "
    Loop
    A moj problem polega na tym iz program wykrywa mi trzy czujniki wypisuje trzy ID lecz trzeci tak jak by kopiował pierwszy czyli naprawde widzi tylko dwa i nie wiem co jest???
  • REKLAMA
REKLAMA