Witam! Jako że zaczynam dopiero z bascomem mam mały problem z napisaniem sensownego kodu do termometru. Na tą chwilę z materiałów znalezionych w internecie udało mi się zlepić coś takiego:
Na tą chwilę oba czujniki podłączone są do portu PD7, odłączenie jednego z czujników powoduje to, że "przepisywane" jest wskazanie z drugiego czujnika i wyświetlane temperatury wewnętrzna i zewnętrzna są takie same. Chciałbym,aby w przypadku odłączenia jednego czujnika, przykładowo temperatury wewnętrznej na wyświetlaczu pojawiał sie komunikat w stylu temp.wew:brak. Jak to zrobić? Proszę o pomoc.
$regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8
$crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza)
'Deklaracja portów od wyświetlacza LCD
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2 'ustawiamy typ wyświetlacza
'*************************************WAŻNE**********************************************
Config 1wire = Portd.7 'deklaracja portu na którym będą podpięte DS18b20
Dim I1 As Integer , Ss As String * 6
Dim I2 As Integer
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim B As Byte 'deklaracja zmiennej do odczytu kodów ID
Dim W As Byte 'deklaracja zmiennej do odczytu ilośc czujników
Deflcdchar 0 , 2 , 5 , 2 , 32 , 32 , 32 , 32 , 32
'znak stopnia Celsjusza
Deflcdchar 1 , 16 , 16 , 20 , 24 , 16 , 16 , 30 , 32 ' Ł
Cursor Off 'Wyłącza kursor
Cls 'Funkcja CLS czyści ekran
Lcd " MI" ; Chr(1) ; "EGO " ; 'ekran startowy (pojawia się tylko podczas włączania urządzenia)
Lowerline
Lcd " DNIA "
Wait 2
Cls
'Znajdź pierwszy czujnik podpięty do portu
Dsid1(1) = 1wsearchfirst() 'Znajdź kolejny czujnik podpięty do portu
Dsid2(1) = 1wsearchnext() 'Znajdź kolejny czujnik podpięty do portu
Do
1wreset
1wwrite &H55
1wverify Dsid1(1) 'wysyłamy adres pierwszego czujnika
1wwrite &HBE
I1 = 1wread(2)
'---------------------------------
1wreset
1wwrite &H55
1wverify Dsid2(1) 'wysylam adres drugiego czujnika
1wwrite &HBE
I2 = 1wread(2)
'---------------------------------
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
I1 = I1 * 10
I1 = I1 / 16
'If I1 > 0 Then Cls 'korekta przesuniecia znaku st C przy przejściu z temp ujemnej na dodatnią
Ss = Str(i1)
Ss = Format(ss , " 0.0")
Locate 1 , 1 'Pozycja wyświetlania nazwy i temperatury (1.1 -> 1 linia 1 kolumna, 2.10 -> 2 linia 10 kolumna itd)
Lcd "Temp.wew:" ; Ss ; Chr(0) ; "C"
I2 = I2 * 10
I2 = I2 / 16
'If I2 > 0 Then Cls
Ss = Str(i2)
Ss = Format(ss , " 0.0")
Locate 2 , 1
Lcd "Temp.zew:" ; Ss ; Chr(0) ; "C"
Loop
Na tą chwilę oba czujniki podłączone są do portu PD7, odłączenie jednego z czujników powoduje to, że "przepisywane" jest wskazanie z drugiego czujnika i wyświetlane temperatury wewnętrzna i zewnętrzna są takie same. Chciałbym,aby w przypadku odłączenia jednego czujnika, przykładowo temperatury wewnętrznej na wyświetlaczu pojawiał sie komunikat w stylu temp.wew:brak. Jak to zrobić? Proszę o pomoc.