rozwiązanie z tymi czujnikami jest dosyć proste.
Jak ja to zrobiłem? opiszę po krótce sposób postępowania ....
....otóż po włożeniu dowolnej (tzn ustalonej programowo np 2, 5 lub 10) ilości czujników układ rozpoznaje je wszystkie co jakiś czas na wypadek gdyby któryś umarł, albo go ktoś ukradł, zabrał czy zamienił

- czyli tworzy ich tablicę ale dynamiczną w pamięci RAM
.... inna procedura dokonuje cyklicznie pomiaru temperatury na każdym z czujników podając na wyjściu jego temperaturę i co ważne jego adres za każdym razem
... jeszcze inna procedura która wydaje rozkaz pomiaru odbiera cyklicznie temperaturę i nr czujnika i na początku dokąd użytkownik nie dokona zapisu konfiguracji czujników wszystkie opatrzone są opisem (NOWY) i mogą się znajdować gdziekolwiek. Ta procedura posiada tablicę powiedzmy takie okienka na każdy czujnik z jego numerem i opisem np "pokój", "piwnica", "na zewnątrz" , "kotłownia" itd
.... w dowolnym momencie użytkownik naciska klawisz "zapisz konfigurację czujników" i wtedy ta tablica jest zapisywana do EEPROM. Od tej pory powinniśmy aby uniknąć pomyłek oznaczyć jakąś taśmą który jest który - ale jak to zrobić bez ich dotykania, schładzania itp? teraz to jest już proste - wystarczy po tym zapisie konfiguracji wyjmować po kolei każdy z czujników i patrzeć w którym "okienku" pojawi się słówko "BRAK" zamiast podajen temperatury. Czyli np patrzymy, że po wyjęciu pierwszego w okienku czujnika z opisem "piwnica" zniknęła temperatura - to go trzymamy już w łapkach i oklejamy
.... dodatkowo dorobiłem w swoim programie taką możliwość, że jeśli w miejsce takiego wyjętego albo uszkodzonego czujnika włożymy inny to oczywiście jego temperatura pojawi się w pierwszym takim wolnym okienku ale jednocześnie pojawi się dopisek (NOWY) przy jego adresie po to aby można było znowu ew zapisać go na stałe w konfiguracji
.... dzięki takiemu podejściu rozpoznawanie nawet dużej ilości czujników nie stanowi problemu nawet pod względem czasowym bo takie procedury mogą działać szybko w trybie ustawiania i konfiguracji no i odpada już jak mówiłem wcześniej problem, macania, lizania, schładzania i wąchania czujników aby określić który fizycznie jest którym - trza się wspierać oprogramowaniem
zresztą zobaczcie sami jak to działa w moim nowo powstającym projekcie. Program ten narazie działa na PC ale równie dobrze można go zrobić w procku. Zresztą układ działa tak, że poza PCtem jest sobie Atmega8, która mierzy te temperatury i przysyła właśnie do PCta te teperatury z czujników oraz ich numery seryjne. W tym projekcie są akurat tylko 2 czujniki i zamiast opisu mają tylko numerki [1] oraz [2] ale zasada jest dokładnie taka jak opisałem. Układ był testowany w ten sposób na 6 czujnikach i też działał ale do tego projektu potrzebne są akurat tylko dwa. Pokażę to na kilku obrazkach poniżej:
1 - stan gdy są niezdefiniowane czujniki i jeszcze nie zapisana ich konfiguracja:
2 - pokazany jest stan bezpośrednio po zapisie konfiguracji (zwórcie uwagę na numery czujników w czarnych okienkach)
3 - to stan gdy wyciągam dowolnego DS18B20 i odrazu widać który czujnik wyjąłem i mogę go okleić - nadać opis [1]
4 - tu pokazuję co się dzieje gdy w miejsce np uszkodzonego czujnika wpinam jakis inny - pojawia się jak mówiłem on w pierwszym wolnym okienku z własnym numerem oraz znowu mam możliwość uaktualnienia/zapisu konfiguracji
widać wyraźnie - zaznaczyłem to, że nowy bo ma inny numer niż te dwa poprzednie.
całość spisuje się dobrze w okresie testowym jeszcze cały czas całego projektu
pozdrawiam