źle
DO musisz zamknąć loop więc to nie będzie działać po za tym każde wyskok z Do loop odkłada na stos informacje kilka takich do loop-ów i procek będzie Ci się sam restartował.
Manerus, Napisz jak najdokładniej potrafisz co to ma robić krok po kroku może graficznie to rozrysuj.
jakie czujniki i jakie czynności w lecie a jakie w zimie.
Po za tym czujniki DS18B20 obsługuje się wszystkie na raz a potem tylko wykorzystujesz dane z nich pobrane:
Kod: Zaznacz cały
1wreset
1wwrite &HCC 'skip all
1wwrite &H44
To każe sprawdzić temperaturę wszystkim czujnikom na lini 1 wire
Więc robisz to raz
co 750ms lub 1 s i nie używasz
waitms750 tylko timera który po odliczeniu czasu
zrobi
Kod: Zaznacz cały
If Czas >= 100 Then 'to jest miejsce w którym podjęta jest decyzja o tym czy robić czy nie robić odczytu danych z czujnika zamiast waitms750 użyty jest timer.
Disable Timer0
1wreset
1wwrite &H55
1wwrite Ds1(1) , 8 'sending address of first ds sensor
1wwrite &HBE
I1(1) = 1wread(2)
1wreset
1wwrite &H55
1wwrite Ds2(1) , 8 'sending address of second ds sensor
1wwrite &HBE
I2(1) = 1wread(2)
1wreset
1wwrite &H55
1wwrite Ds3(1) , 8 'sending address of third ds sensor
1wwrite &HBE
I3(1) = 1wread(2)
pobierze dane z pamięci czujników i zapisze. W tym przypadku kolejno zapisuje do
I1(1), I2(1) , I3(1)
zmienne I1(2)-odpowiada czujnikowi DS18B20 i to jest zmienna tablicowa o rozmiarze 2 byteów na właśnie dwa byte-y zawierające informacje o temperaturze.
Bez sensem jest dawanie tego w odrębnych do loop-ach
Teraz kolejna część jak już pobrałeś dane musisz je obrobić tak żeby były użyteczne
Musisz zamienić miejscami.
Kod: Zaznacz cały
Temp1 = I1(2) 'Most significant byte of temp
Shift Temp1 , Left , 8 'shift left
Temp1 = Temp1 + I1(1)
Shift Temp1 , Right , 4
Temp2 = I2(2) 'Most significant byte of temp
Shift Temp2 , Left , 8 'shift left
Temp2 = Temp2 + I2(1)
Shift Temp2 , Right , 4
Temp3 = I3(2) 'Most significant byte of temp
Shift Temp3 , Left , 8 'shift left
Temp3 = Temp3 + I3(1)
Shift Temp3 , Right , 4
' ****konwersja temp dla wszystkich dsow**
'Teraz dopiero wysyłasz informację do czujników żeby zaczęły pobierać temperaturę co zajmie około 750ms
Kod: Zaznacz cały
1wreset
1wwrite &HCC 'skip all
1wwrite &H44
Więc masz około 1 sekundy na zrobienie innych pierdół
[ Dodano: 2011-06-15, 20:51 ]
Widzę że autor zapomniał o wątku.