Code Arduino pour robot a ultrason

Bonjour, actuellement étudiant en CPGE TSI, nous avons un projet ayant pour but de faire une course avec des robots a ultrason. Nous disposons de 2 moteurs EMG 30, un capteur a ultrason, un servo moteur, une carte arduino et une carte MotorShield.

Le seul probleme que je rencontre est le codage sur Arduino.

Nous devons parcourir un circuit ayant 3virages sur la droite, 1 sur la gauche, et deux sur la droite.

Ma methode serait de longer le mur d'environ 10 cm durant les 3 premiers virage, ensuite de faire tourner le capteur a ultrason positionner sur le servomoteur pour analyser la ou la distance est la plus longue pour tourner sur la gauche, puis de relonger le mur sur la droite.

Si vous pouviez m'aider sur ce codage ce serait vraiment sympa.

Merci d'avance

PitP10

La marmotte ne met pas le papier autour du chocolat.

Commence par nous fournir du code que tu as écrit, surtout pas un assemblage de couper coller récupéré sur internet incompatibles entre eux : pour commencer on le détecte et pour finir ça ne nous met pas en bonne disposition.
N'oublie pas de donner des indications claires sur les endroits où tu bloques et il se trouvera toujours quelqu'un pour aider.
Dans ce sens cela ira bien mais dans l'autre ne rêve pas, Noêl c'est passé.

Rappel avant de coder il faut marquer sur le papier les actions à faire, les conditions qui les déclenchent, l'ordre et les priorités d'exécution.
Le codage c'est après. Le codage est d'autant plus facile que la phase papier est correctement réalisée.

Oui oui, je ne reve pas, j'aime faire de moi-même, et ca ne m'apporterait rien pour les concours de vous demander.
L'endroit ou je bloque est de créer le morceau de programme permettant de vérifier la distance entre le mur et le capteur tout en avancant

Bonsoir,

Quel est le problème exactement ? As-tu un bout de code à nous proposer ? Comment contrôles-tu tes moteurs ?

@+

Zoroastre.

L'endroit ou je bloque est de créer le morceau de programme permettant de vérifier la distance entre le mur et le capteur tout en avancant

Si c'est le "tout en avançant" qui te créé des nœuds au cerveau mets le problême en équation.
Soit
vo : la vitesse du son
v : la vitesse du robot
Do : la distance à mesurer.

Séparons en deux phases : l'aller entre le lieu d'émission et le mur et le retour entre le mur et le nouvel emplacement du robot.

Phase aller
|-------------------D---------->------------|Mur
|-->--D1---x |

Soit t1 le temps de la phase aller. t1 est le temps mis par le son entre le lieu d'émission et le mur à la distance Do.
t1 = Do/vo
Pendant ce temps t1 le robot aura avancé d'une distance D1 telle que D1= vt1
soit D1 = Do
(v/vo)

Phase retour
Pour se rejoindre le son et le robot vont parcourir respectivement la distance D2 et D3
|------------------D------------>------------|
|----D1->---|---D3--->--x----<---D2--------|

Bien évidement les distances D2 et D3 seront parcourues pendant le même temps t2
D2 = vot2
D3= v
t1
D'autre part on a l'égalité suivante :
D-D1 = D2 +D3

En tripatouillant tout ça on obtient :
Temps théorique mis par le son pour faire l'aller et le retour (robot immobile) T = 2t1= 2D/vo
Temps réel en tenant compte du déplacement du robot T = t1 +t2 = D/(vo+v)

Si on fait le rapport R = (temps réel) / (temps théo) on obtient
R= vo/ (vo+v)
Avec un robot qui avance à 90 km/h soit 25 m/s l'erreur est égale à 7%
Avec un robot "plus réaliste" qui avance à 5 km/h (1,39 m/s) l'erreur n'est plus que de 0,4 %

Il y a toujours un problème ?

Et le code entre balise ...

Merci de respecter la charte du forum

+1

et en image :grin:

Mon robot est presque fonctionnel.
J'aimerai juste rajouter un petit plus, par exemple, quand je longe le mur droit avec le capteur droit et quand il ne detecte plus ce mur, j'aimerai qu'il tourne a droite. Pour cela j'ai ecrit
if(dist1>=70) plus mon petit bout de code, mais il ne prend pas en compte cette parti, et j'ai l'impression qu'il ne prend pas toutes valeurs quand on met le signe superieur, quelqu'un aurait-il une solution ou m'expliquer pourquoi s'il vous plait?
Merci d'avance