Primero te explico lo que hace. La variable estática sirve para mantener el mismo valor en cada intervalo de tiempo. Si no fuera estática cuando termina el procedimiento (End Sub) se borraría el valor.
Ahora con la cuestión del tiempo, el problema es que el Timer tiene un valor en la propiedad Interval predeterminado. Lo que podés hacer es crear un procedimiento para que espere un determinado tiempo, luego usarlo para esperar cuando el robot tiene que girar.
Por ejemplo:
Sub WaitSyn(Milliseconds As Long)
Dim snTimer!
snTimer = Timer
'Entra al bucle y lo ejecuta hasta que se cumpla el tiempo especificado.
'
Do While (Timer - snTime) < (Milliseconds / 1000)
DoEvents
Loop
End Sub
Luego llamas a este procedimiento para que espere un determinado tiempo antes de que el robot gire:
Private Sub Timer1_Timer()
Static iState%
Select Case iState
Case 0:
'Haces que el robot realice una acción, en este caso sería que vaya hacia atrás.
Case 1:
'El Robot gira.
'Espera tres segundos antes de hacer que el robot gire.
'
Call WaintSyn(3000)
Case Else
iState = 0
Timer1.Enabled = False 'Deshabilita el Timer para que sólo haga la secuencia una vez.
End Select
iState = iState + 1
End Sub
Saludos.