Bonjour
En effet, il risque d'attendre longtemps ;o)
Je vous conseille très fortement d'utiliser des variable de mode. Je vous donne un exemple:
(ici j'utilise des constantes, comme AVANCE. Elles doivent être déclarées dans le tableau des constantes en haut à droite d'Aseba Studio. Vous pouvez leur donner une valeur arbitraire, c'est juste pour faire des tests de valeurs mais attention, si vous utiliser une constante AVANCE et une ATTEND et que vous leur donnez la même valeur, ça ne servira à rien car le test donnera la même réponse, mettez toujours des valeurs différentes)
var mode = AVANCE # AVANCE = 1
var compteur_attend = 0
var compteur_attend_apres_redemarrage = 0
timer.period[0] = 1000
onevent prox
if prox.ground.reflected[0] <=100 and mode == AVANCE then
call leds.top(0,255,0)
motor.right.target = 0
motor.left.target = 0
mode = ATTEND # ATTEND = 2
end
onevent timer0
if mode == AVANCE then
motor.right.target = 100
motor.left.target = 100
elseif mode == ATTEND then
compteur_attend++
if compteur_attend > SEUIL_ATTEND then #SEUIL à régler pour matcher le temps d'attente. Avec timer.period[0] = 1000, chaque incrément attend une seconde. Pour plus de résolution, diminuer le temps de timer.period.
mode = ATTEND_APRES_REDEMARRAGE
motor.right.target = 100
motor.left.target = 100
compteur_attend = 0
end
elseif mode == ATTEND_APRES_REDEMARRAGE then
compteur_attend_apres_redemarrage++
if compteur_attend_apres_redemarrage > SEUIL_ATTEND_APRES_REDEMARRAGE then
mode = AVANCE
compteur_attend_apres_redemarrage = 0
end
end
Les modes permettent de faire des choses plus complexes. Ici, un mode pour avancer normalement, un mode pour attendre, un mode pour attendre le temps de ressortir de la zone spéciale.
Une petite note pour le timer, c'est une variable classique d'Aseba donc en 16 bit signé, ce qui signifie que lui donner des valeurs de plus de 32768 est inutile. De plus, il vaut mieux avoir un timer qui compte un petit nombre (par exemple à 1000, ça fait une seconde) et d'avoir un compteur dans l'événement.
Bonne suite !
et n'hésitez pas à demander d'autres précision :o)