#1 Rather Be Nouveau membre Membres 5 messages Posté 12 avril 2014 - 10:30 Bonjour à tous, Voila, je suis en pleine fabrication de mon robot "suiveur" mais je rencontre actuellement un probleme: J'aimerais que mon servo tourne sur une plage ( 0° - 180°) JUSQU'A ce que le capteur ultrason détecte une distance supérieure à "X". J'ai éssayé avec la fonction " while " + " random ", je m'explique: while ( cm < 20) { ( random(180));} Pour ceux qui voient de quoi je parle, vous vous doutez que cela ne fonctionne pas, je suppose que le " random " génere les nombres trop rapidement pour le servo.. Mais j'ai également remarqué un autre probleme.. Lorsque je cale ma boucle " while " dans mon programme, le capteur ultrason émet/recois qu'une seule fois.. Et il trouve 0 à chaque fois. De ce fait, je reste enfermé dans ma boucle "while".. Je vous balancerai bien le code mais je ne l'ai pas enregistré />/>/> Je le referai pour vous le montrer si il faut />/>/> En résumé: Existe t'il une fonction pour que mon servo tourne continuellement sur une plage ( 0° - 180°) JUSQU'A ce que le capteur ultrason détecte une distance supérieure à " X "?
h ou tu l'as récupéré sur le web? Il serait interessant d'afficher sur la console ce que vaut maDistance = nvert( (), 1) et le comparer avec la vraie valeur, t'aurais alors une idée de là où ça coince 28 décembre 2014 à 12:46:47 Pour tes prochains posts, penses à utiliser la balises code Pense aussi au fait que loop est exécuté en boucle. Ton code est exactement: loop: Si < 20cm: Tourner dans un sens Si > 20cm: Tourner dans l'autre sens Alors forcément, dans tous les cas, ton servo va tourner. Là où encore plus problématique, c'est lorsque ton servo a finit de tourner, la fonction loop recommence. Du coup, tu va faire un write de la position opposée pour faire retourner ton servo afin qu'il revienne là ou il était. Tu devrais plutôt faire un code de ce genre: int maPosition = 90; void loop() { maDistance = nvert( (), 1); if( maDistance <= 20) { pos++} else { pos--;} if ( pos > 180) { pos = 180;} if ( pos < 0) { pos = 0;} (pos); delay(15);} Arduino, servomoteur et capteur ultrasonic × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
Capteur ultrason HC-SR04 Ce module permet d'évaluer les distances entre un objet mobile et les obstacles rencontrés. Il suffit d'envoyer une impulsion de 10 µs en entrée et le capteur renvoie une largeur d'impulsion proportionnelle à la distance. Alimentation: 5 Vcc Consommation: 15 mA Fréquence: 40 kHz Portée: de 2 cm à 4 m Déclenchement: impulsion TTL positive de 10µs Signal écho: impulsion positive TTL proportionnelle à la distance. Calcul: distance (cm) = impulsion (µs) / 58 Dimensions: 45 x 21 x 18 mm Référence Lmk:295 En stock 1 Produit
But de ce tutoriel:
Dans ce tutoriel on va tester le servomoteur en faisant balayant une plage angulaire dans un sens puis dans l'autre:
Il se positionne à l'angle 0°
il se positionne à l'angle 180°. on retourne à l'étape 1
Composants nécessaires
carte Arduino UNO
servomoteur
des fils de connexion
Montage
Le branchement est presque toujours le même et se fera à l'aide de 3 fils dont voici les principales couleurs que vous pourrez rencontrer:
Rouge: fil de l'alimentation à relier à la broche 5V de l'Arduino
Marron: fil à relier à la broche GND de l'Arduino
Jaune: fil de signal de positionnement branché à la borne numérique N°1 de l'Arduino. Programme Arduino
Voici le programme qui permet de tourner un servomoteur par la carte Arduino. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/** * Exemple de code pour un servomoteur, il fait faire des va-et-vient à la tête du servomoteur. */ /* Inclut la lib Servo pour manipuler le servomoteur */ #include