Kod wykrywa tylko dwa czujniki ponieważ, w zmiennej "Bit_numer" zapamiętywane jest tylko jedno rozgałęzienie. I to rozgałęzienie wskazuje albo jeden albo drugi czujnik. Dla N urządzeń na magistrali masz N-1 rozgałęzień, które trzeba zapamiętać.
Sama idea jest bardzo prosta.
1) Reset magistrali
2) komenda search command (0xF0)
3) odebranie bitu adresu
4) odebranie bitu adresu zanegowane
5) jeśli bity tworzą parę zapamiętujemy jako "niesporną" część adresu -> punkt 7
6) jeśli oba bity zawierają zero oznacza to, że jedno z urządzeń wysłało 1|0 a drugie z urządzeń 0|1 , jako iż zero jest "dominujące" otrzymujemy dwa zera
6a) tak więc wiemy, że na magistrali są dwa urządzenia, które na tym bicie adresu się różnią
6b) podejmujemy decyzję czy najpierw sprawdzamy urządzenie z bitem adresu 0 czy 1 , nie ważne co wybierzemy i tak będzie trzeba tu wrócić i odpytać dla przeciwnego bitu, wiec w jakiś sposób trzeba zapamiętać rozgałęzienie i kierunek który został sprawdzony
6c) jeśli oba bity są jedynkami coś poszło nie tak
7) wysyłamy bit adresu urządzenia/urządzeń z którym zamierzamy kontynuować zbieranie dalszych bitów adresu
8) powtarzamy od punktu 3 dla dalszych bitów
9) powtarzamy od punktu 1 dla wszystkich spornych bitów
Nie wiem czemu wywarzasz otwarte drzwi, w necie są sensownie napisane funkcje do przeszukiwania N urządzeń, ponieważ bez ograniczenia teoretycznie możesz się spodziewać 2^64 urządzeń.