INTOUCH napisał: Ogólnie dalmierze ultradźwiękowe nie są zbyt dokładne.
Strasznie kłamią przy zbyt bliskich odległościach i przy zbyt dalekich.(jeżeli podczas pomiaru odległości będzie jakaś niewielka przeszkoda to cały pomiar zchrzaniony, to samo będzie gdy odbiornik odbierze inny sygnał o zbliżonej częstotliwości)
Średnia dokładność to 1cm na każdy metr odległości.
Fala dźwiękowa rozchodzi się nie tylko wzdłuż ale i w szerz.
Wykorzystaj sprzętowy PWM. (najlepiej tryb fast PWM) cały czas będzie ci generował falę prostokątną nie obciążając niepotrzebnie procesora. Do pomiaru informacji zwrotnej spróbuj wykorzystać przetwornik ADC, zamiast komparatora.
Prawdopodobnie będziesz musiał przerobić układ.
Błędy możesz mieć równie dobrze ponieważ stosujesz
_delay_ms(czas); i przerwania.
Wystąpienie przerwania wydłuża liczenie czasu.
_delay_ms(czas +czas_trwania_przerwania);
Niestety, ale nie jest to prawdą. Takie coś można mówić o prymitywnych prostych układach, ale jest możliwe zarówno zrobienie urządzenia, które mierzy od bardzo niewielkiej odległości, jak też bardzo precyzyjnego (osiągalne są wartości grubo lepsze niż mikrometr na dziesiątkach centymetrów i przynajmniej 0,1mm na metrach). Muszę jednak przyznać, że winni są nader często także użytkownicy, którzy nie zdają sobie wcale sprawy z uwarunkowań techniki i zakładają rzczy nie mające związku z rzeczywistością.
Niejeden raz miałem okazję na tym właśnie forum spotkać się z takim podejściem.
Trzeba wziąć pod uwagę, że sygnał generowany przez proste układy jest paczką impulsów, która po odbiciu jest w jakiś sposób zmodulowana. Sposób detekcji tego sygnału jest krytyczny dla dokładności. To pewnie jest problem, która ma twórca wątku.