-
Expón algo del código para poder situarnos algo mejor...
Deberías saber que el impulso viene de esos sensores, no entiendo cuál es el problema y para qué usas timers. Explicate un poco mejor.
Saludos.
-
Antes que todo, excelente proyecto :), mis felicitaciones.
Ahora con el código, podrías usar un timer y una variable estática. El siguiente ejemplo muestra como hacerlo:
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.
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.
-
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.
Do While (Timer - snTimer) < (Milliseconds / 1000)*
xD
un saludo.
-
-