Czy to tak trudno zrozumieć, że prawdopodobieństwo rozwiązania problemu maleje wykładniczo względem ilości zmiennych?
W opisywanym przypadku zepsute może być wszystko, więc przyczynę można znaleźć wyłącznie poprzez losowanie.
Natomiast postępowanie metodyczne polega na kolejnym eliminowaniu możliwych przyczyn. Zacząć trzeba od któregoś końca, albo od krańcówek, albo od kodu.
Poniżej przykład metodycznego postępowania.
Gołe Arduino zaprogramowane GRBL i podłączone do komputera z programem UGS :

Jak widać (pomimo że obrazek jest statyczny) kontroler odpowiada na komendy, a po wydaniu polecenia $H licznik osi Z zmienia wskazania.
Wynika stąd że program działa (przynajmniej w tym fragmencie kodu) a jako pierwsza bazowana jest oś Z.
Może zbyt wiele z tego wywnioskować się nie da, ale coś już ustalone mamy, możemy kolejno sprawdzać czy wystawiane są sygnały STEP/DIR na odpowiednich pinach i jak kontroler zareaguje na zwarcie wejścia HOME_Z.
I tak dalej...