Witam, Kod sprawdzony, wiem, że działa bo za jego pomocą jest mierzona temperatura na dwóch radiatorach we własnej roboty zasilaczu warsztatowym (na podstawie odczytu temperatury jest sterowany wentylator używając PWM). Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portb.1 , Db5 = Portb.2 , Db4 = Portb.3 , E = Portb.4 , Rs = Portb.5 Cursor Off Cls Cursor Off Dim Dsid(9) As Byte Dsid(1) = &H10 : Dsid(2) = &H68 : Dsid(3) = &H17 : Dsid(4) = &H25 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H98 Dim Sc(9) As Byte Dim T As Integer Dim T1 As Integer Dim I As Byte Dim Temperature1 As Single Dim Temperature_1 As String * 5 Dim W As Byte Locate 1 , 3 Lcd "Temperatury:" Do W = 0 Config 1wire = Portc.w Gosub Pomierz Locate 2 , 1 Lcd Temperature_1 ; " " Incr W Config 1wire = Portc.w Gosub Pomierz Locate 2 , 7 Lcd Temperature_1 ; " " Incr W Config 1wire = Portc.w Gosub Pomierz Locate 2 , 13 Lcd Temperature_1 ; " " Loop Pomierz: ' Alle angeschlossenen DS1820 zum Messen veranlassen 1wreset 1wwrite &HCC 1wwrite &H44 Waitus 200 ' 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 2 , 1 Temperature1 = T / 10 Temperature_1 = Fusing(temperature1 , "#.#") Else ' Wenn Fehler Scratchpad zur Kontrolle Hexadezimal ausgeben Locate 2 , 1 ' Es passen nur 8 Byte auf das Display For I = 1 To 8 Lcd Hex(sc(i)) Next End If Return End
|
|||
Kod
Witam,
może ktoś opisać algorytm w pseudokodzie? Próbuję przerobić kod na C, ale brak znajomości jakichkolwiek podstaw bascoma okazuje się sporą przeszkodą.
Pozdrawiam
Paweł
Re: Obsługa ds18b20 w C
A wystarczyło wpisać w google hasło "obsługa ds18b20 w c" i -> OTO WYNIK <- jeden z wielu.
Moja strona w powijakach
Re: Kod
Ale chodzi mi o obsługę kilku ds.
Pozdrawiam