Miałem problem z chińskim HC-SR04, zawieszał się i ciągle otrzymywałem 0 jako odległość.
Na szczęście znalazłem już sposób opisany przez kogoś na wykopie, problem rozwiązuje ten kawałek kodu:
if (dystans == 0) {
pinMode(echoPin, OUTPUT);
digitalWrite(echoPin, LOW);
// mozliwe, ze mozna zejsc do mniejszych wartosci, mi to wystarczy, nie drazylem dalej
// mozliwe tez, ze musisz ustawic tu wieksza wartosc, aby odwiesic czujnik
delay(20);
pinMode(echoPin, INPUT);
}
Myślę, że może komuś się przydać.