dx=Xi-X0;
dy=Yi-Y0;
dd=dx*dx+dy*dy; (Pitagoras się kłania)
porównujesz z R^2 - np.
R2=R*R;
dr=abs(dd-R2);
następnie wybierasz ruch który da najmniejszą wartość dr. Tylko nie próbuj czasem liczyś dr dla wszystkich 8 kierunków bo może się okazać że skieruje cię "do tyłu"

Ale naprawdę warto zapoznać się z algorytmem Bresenhama bo pozwala on zrobić potrzebne porównania znacznie mniejszym kosztem. Nie wiem którego modelu Arduino używasz ale jeśli nie jest to jakaś 32 bitowa rakieta to żeby uzyskać sensowną częstotliwość kroków będziesz musiał pisać bardzo oszczędny (w sensie cykli procesora) kod.