W podanym przykładzie numer seryjny czujnika jest pomijany (1 czujnik - 1 pin) więc nie ma potrzeby rejestracji czujników, odpada część kodu poświęcona temu problemowi.
Do linii może być podpięte wiele DS-ów i poprawnie odczytamy ich serial, w Bascomie służą do tego polecania :
1WSEARCHFIRST, 1WSEARCHNEXT.
Oczywiście Bascom bardzo nie szanuje zasobów ale i tu znowu powiem, że nie jest ani gorszy ani lepszy, ma swoje wady i zalety, swoich zwolenników i przeciwników, natomiast podaje przykład w Bascomie chociaż faktycznie kolega endurasek nie podał w jakim języku pisze swój program.
Co do wykorzystania dwóch pinów, świetny pomysł, bardzo by to uprościło rejestrację czujnika. Z menu wybieramy miejsce pomiaru, podłączmy czujnik do "linii serwisowej", zczytujemy jego ID , a później podpinamy do magistrali roboczej gdzie mierzy już to co ma mierzyć i to też jest OK.
Pomiar temperatury przy pomocy Ds18B20 na kilku portach
A poniżej (zdaje się) 6 czujników na jednej linii i bascom
http://mirley.firlej.org/sterownik_domowy
http://mirley.firlej.org/sterownik_domowy
Problemem przy tworzeniu takiego systemu, jest stworzenie rozwiązań uniwersalnych.
Czyli trzeba, tak pisać procedury, aby same, pobierały argumenty kalibracyjne, jak ilość odczytywanych w systemie czujników. To już nam mówi że procedura/ funkcja musi być jakąś pętlą, a nie CASEm czy IFem. dane stale należy przechowywać w EEPROM.
Ogólnie trzeba stworzyć miniaturowy system operacyjny, w ktorym jeden timer odmierza nam czas systemowy, w takt tego czasu wykonujemy, pomiary, detekcje, czy sterujemy procesami.
A wiec tak wybieramy jeden Timer, najlepiej najsłabszy, i robimy z niego RTC.
Teraz wybieramy sobie wygodną podstawę czasu. Wygodna jest tutaj podstawa będąca potęgą liczby dwa, bo wtedy jeden licznik może, łatwo mierzyć kilka czasów, ponieważ wystarczy śledzić tylko wartości poszczególnych bitów w jego bajcie.
Teraz poszczegulne, operacje w programie, wykonujemy w takt zegara systemu, i tyle.
Czyli trzeba, tak pisać procedury, aby same, pobierały argumenty kalibracyjne, jak ilość odczytywanych w systemie czujników. To już nam mówi że procedura/ funkcja musi być jakąś pętlą, a nie CASEm czy IFem. dane stale należy przechowywać w EEPROM.
Ogólnie trzeba stworzyć miniaturowy system operacyjny, w ktorym jeden timer odmierza nam czas systemowy, w takt tego czasu wykonujemy, pomiary, detekcje, czy sterujemy procesami.
A wiec tak wybieramy jeden Timer, najlepiej najsłabszy, i robimy z niego RTC.
Teraz wybieramy sobie wygodną podstawę czasu. Wygodna jest tutaj podstawa będąca potęgą liczby dwa, bo wtedy jeden licznik może, łatwo mierzyć kilka czasów, ponieważ wystarczy śledzić tylko wartości poszczególnych bitów w jego bajcie.
Teraz poszczegulne, operacje w programie, wykonujemy w takt zegara systemu, i tyle.