Bonjour,
Voilà je possède un starter kit picaxe 28x1 et un L239D.
J'aimerais faire tourner 2 moteurs en fonction des valeurs d'un capteur à ultrasons.
En faisant juste tourner le capteur à ultrasons pour obtenir la valeurs de la tension caractérisant la distance, il n'y a aucun problème et il fait ça instantanément dans une boucle infinie.
Cependant, en faisant tourner les moteurs en fonction de la valeurs trouvée, le capteur à ultrason oscille entre 0 et la valeurs mesurée. Il est donc impossible pour moi de mettre un "if ..." si la valeur oscille.
Mon programme pour le capteur est le suivant :
Capteur:
low portc 0
high portc 0
pause 1
low portc 0
dscint %00000000
pulsin 0, 1, w0
(comme cité plus haut, je l'ai mis dans une boucle infinie et juste ces commandes il n'y a pas de problème, la valeur w0 ne vaut jamais 0.
Si je fais un code du style :
Main:
do
low portc 0
high portc 0
pause 1
low portc 0
dscint %00000000
pulsin 0, 1, w0
if w0 > $0040 then goto goforward
elseif w0 < $0040 then goto gostop
end if
loop
goforward:
high 4 : low 5 : high 6 : low 7
goto main
gostop:
low 4 : low 5 : low 6 : low 7
goto main
Là, en mettant un debug w0, je vois la valeur de w0 osciller entre 0 et $xxxx avec une période d'une demi-seconde.
Il y a aussi la valeur de "outpins" qui est modifiée tandis que dans le 1er cas elle ne l'est pas.
Aidez moi s'il vous plait, je ne comprend pas le problème
Merci beaucoup !
Cordialement
kooooj
Voilà je possède un starter kit picaxe 28x1 et un L239D.
J'aimerais faire tourner 2 moteurs en fonction des valeurs d'un capteur à ultrasons.
En faisant juste tourner le capteur à ultrasons pour obtenir la valeurs de la tension caractérisant la distance, il n'y a aucun problème et il fait ça instantanément dans une boucle infinie.
Cependant, en faisant tourner les moteurs en fonction de la valeurs trouvée, le capteur à ultrason oscille entre 0 et la valeurs mesurée. Il est donc impossible pour moi de mettre un "if ..." si la valeur oscille.
Mon programme pour le capteur est le suivant :
Capteur:
low portc 0
high portc 0
pause 1
low portc 0
dscint %00000000
pulsin 0, 1, w0
(comme cité plus haut, je l'ai mis dans une boucle infinie et juste ces commandes il n'y a pas de problème, la valeur w0 ne vaut jamais 0.
Si je fais un code du style :
Main:
do
low portc 0
high portc 0
pause 1
low portc 0
dscint %00000000
pulsin 0, 1, w0
if w0 > $0040 then goto goforward
elseif w0 < $0040 then goto gostop
end if
loop
goforward:
high 4 : low 5 : high 6 : low 7
goto main
gostop:
low 4 : low 5 : low 6 : low 7
goto main
Là, en mettant un debug w0, je vois la valeur de w0 osciller entre 0 et $xxxx avec une période d'une demi-seconde.
Il y a aussi la valeur de "outpins" qui est modifiée tandis que dans le 1er cas elle ne l'est pas.
Aidez moi s'il vous plait, je ne comprend pas le problème
Merci beaucoup !
Cordialement
kooooj