Witam zacząłem projektować termometr na ds1820 do sterowania centralnym piecem.
Odczyt temperatury działa ale nie mogę sobie poradzić z klawiszami np. wejście do menu, zwiększ histerezę itp.
Poniżej zamieszczam mój kod jeżeli ktoś wyłapał by błąd jaki robię był bym wdzięczny
Odczyt temperatury działa ale nie mogę sobie poradzić z klawiszami np. wejście do menu, zwiększ histerezę itp.
Poniżej zamieszczam mój kod jeżeli ktoś wyłapał by błąd jaki robię był bym wdzięczny
regfile = "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config Lcd = 16 * 2
Config 1wire = Portd.7
Config Portc.5 = Input 'tutaj deklaruje przycisk
Portc.5 = 0 'ustawiam stan na 0
Declare Sub Odcz_temp
Dim A As Integer
Dim B As Integer
Dim Temperatura(2) As Byte
Dim Temp1 As Byte
Enter Alias Portc.5 'alias jako enter
Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
Deflcdchar 1 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31
Deflcdchar 2 , 32 , 4 , 14 , 21 , 4 , 4 , 4 , 32
Deflcdchar 3 , 32 , 4 , 4 , 4 , 21 , 14 , 4 , 32
Deflcdchar 4 , 32 , 32 , 32 , 31 , 32 , 32 , 32 , 32
Cls
Lcd "Sterownik pieca CO"
Cls
Lcd "Loading..."
Lowerline
For A = 1 To 16
Lcd Chr(1)
Waitms 80
Cls
Home
Lcd "wybierz 1 lub 2"
Do 'i nie wiem dlaczego tego nie chce mi przejsc
If Enter = 1 Then
Gosub Odcz_temp
End If
Loop
Next
Do
Call Odcz_temp
Home
If Temperatura(2) = 0 Then
Lcd "Piec:" ; Temperatura(1) ; Chr(0) ; "C"
Lowerline
Lcd "Bojler: "
Else
Lcd "temp:-" ; Temperatura(1) ; "C"
End If
Loop
End
Sub Odcz_temp
1wreset
1wwrite &HCC
1wwrite &H44
Wait 1
1wreset
1wwrite &HCC
1wwrite &HBE
Temperatura(1) = 1wread(2)
1wreset
If Err = 1 Then
Cls
Lcd "brak ukladu"
Do
Loop
End If
If Temperatura(2) > 0 Then
Temperatura(1) = 256 - Temperatura(1)
End If
Temperatura(1) = Temperatura(1) / 2
End Sub
End