Comment faire un Obstacle évitant Robot Arduino ! « Mon Robot V1 » (3 / 3 étapes)

Étape 3: Organigramme et CODE

Tout d’abord que nous commençons avec le losange, le losange représente un chèque. Pour cette vérification, nous voyons s’il y a un objet moins de 30 cm pour notre robot. La vérification a deux issues possibles, oui ou non. Oui, ce qui signifie qu’il n’y a en effet certains objets moins 30 cm. Non, ce qui signifie qu’il n’y a aucun objet détecté moins de 30 cm.
S’il n’y a rien de moins de 30 cm, que le robot peut simplement se déplacer vers l’avant que la voie est libre. S’il y a quelque chose de moins de 30 cm le robot doit effectuer des manœuvres d’évitement obstacle.

La première étape de l’évitement d’obstacles est d’arrêter le robot ! Si vous n’arrêtez pas immédiatement le robot il va se planter !

Ouf ! C’est dramatique.

Après que le robot a arrêté il faut voir de quelle manière il faut aller. Il fait ceci en regardant les deux directions, beaucoup comme vous devriez lorsque vous traversez la route. Tout d’abord le robot tourne à gauche, prend une lecture, tourne à droit, prend une lecture.

Une autre vérification se produit pour voir quelle direction est la meilleure façon d’aller. Si à gauche est la voie à suivre il doit rebrousser chemin vers la gauche et puis aller de l’avant. Si à droite est le chemin à parcourir le robot se déplace simplement vers l’avant car il doit déjà faire face dans la bonne direction. Donc c’était assez facile n’était pas elle ? Tout ce que nous devons faire maintenant est de convertir ce diagramme dans le code de l’Arduino et c’est ça, le code d’évitement d’obstacle effectué !

#include

#include

////////////////////////////////////////////////servo motor and sonar sensor ////////////////////////////////////////////

const int dangerdistance = 30 ; distance de sécurité pour les obstacles (en cm) Servo panMotor ; Créez un objet servo #define TRIGGER_PIN 3 / / goupille de Arduino lié à déclencher la broche sur le capteur à ultrasons. #define ECHO_PIN 2 / / goupille de Arduino liée à la broche sur le capteur à ultrasons d’écho. #define MAX_distance 200 / / distance maximale que nous voulons faire un ping pour (en centimètres). Distance maximum sensor est évalué à 400-500 cm. NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_distance) ; NewPing configuration des broches et distance maximale. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// MOTOR //////////////////////////////////////////////////////////////////

*

Ce code effectue quelques manoeuvres simples pour illustrer les fonctions: - motorDrive (motorNumber, motorDirection, motorSpeed) - motorBrake(motorNumber) - motorStop(motorNumber) - motorsStandby

Connexions: - broche 5---> PW101 - broche 7---> AIN2 - Broche 8---> AIN1 - broche 11---> STBY - Pin 12---> BIN1 - Pin 13---> BIN2 - broche 6---> PWMB

-Moteur 1: A01 et A02 - moteur 2: B01 et B02

*

Et définir les broches

Moteur 1 int pinAIN1 = 8 ; Direction int pinAIN2 = 7 ; Direction int pinPWMA = 5 ; Vitesse

Moteur 2 int pinBIN1 = 12 ; Direction int pinBIN2 = 13 ; Direction int pinPWMB = 6 ; Vitesse

Veille int pinSTBY = 11 ;

Constantes pour aider à mémoriser la turnCW booléenne statique de paramètres = 0 ; motorDrive fonction public static boolean turnCCW = 1 ; motorDrive fonction public static boolean motor1 = 0 ; pour motorDrive, motorStop, frein moteur fonctionne public static boolean motor2 = 1 ; pour motorDrive, motorStop, fonctions de frein moteur

////////////////////////////////////////////////////////////////////////////////////////////////////////////////// unsigned long time; minuterie pour boucle do... tout en unsigned long timeplus; / / minuteur pour la boucle do... tandis que

distance de l’int ; int nous ; void setup() {//Set le pinMode moteur broche Modes (pinPWMA, sortie); pinMode (pinAIN1, sortie); pinMode (pinAIN2, sortie) ;

pinMode (pinPWMB, sortie) ; pinMode (pinBIN1, sortie) ; pinMode (pinBIN2, sortie) ; pinMode (pinSTBY, sortie) ; Serial.Begin(9600) ; panMotor.write(90) ; Delay(15000); / / attendre que je reçois panMotor.attach(4) prêt ; s’adapte sur le servo sur la broche 9 l’objet servo}

//////////////////////////////////////////////////////////LOOP//////////////////////////////////////////////////

void loop() {panMotor.write(90); / / mettez un capteur sonar à 90 degrés

Delay(500) ; capteur sonar ping de nous amener à distance int = sonar.ping() ; développantes int = uS / US_ROUNDTRIP_CM ; if(centerdistance==0) {développantes = 200;} Difficulté newping bibliothèque trompé

Si (développantes > dangerdistance) résulte //if chemin {/ / *** alors qu’aucun OBSTACLE à votre FRONT ne KEEP MOVING AND CHECK FOR OBSTACLE chaque MS 100 ***

/ / (capteur donnent moins de robot Gardez 30cm avancer) {int nous = sonar.ping() ; int développantes = uS / US_ROUNDTRIP_CM ; / / vérifier les capteurs delay(100); / / attente pour capteurs stabiliser le motorDrive (motor1, turnCW, 150); motorDrive (motor2, turnCW, 150);} tandis que (développantes < dangerdistance) ;

} / /---Pathé est bloqué---autre //if chemin est bloqué {motorBrake(motor1) ; motorBrake(motor2) ; si (développantes

panMotor.write(175); / / tourner à gauche delay(900) ; int leftdistance = sonar.ping () / US_ROUNDTRIP_CM ; numérisation vers la gauche delay(500) ; if(leftdistance==0) {leftdistance = 200;} Difficulté newping bibliothèque confondu avec / / / comparer DISTANCE droite et gauche / / / si (leftdistance > rightdistance & & leftdistance > dangerdistance) //if gauche est moins encombré et super que dangerdistance {//Stop Motor1, Motor2 motorStop(motor1) ; motorStop(motor2) ; time=millis() ; panMotor.write (175); //turn sonar à gauche « Préparez-vous vérifier le côté gauche du robot quand il tourne » delay(400) / / (tourner un robot vers la gauche tandis que le capteur de donner moins de 30cm et pas plus de temps alors 800 ms) {int nous = sonar.ping() ; distance = uS / US_ ROUNDTRIP_CM ; vérifier les capteurs delay(100) ; Attendez de capteurs stabiliser //Turn vers motor1 : arrêter Motor1, lent motorDrive de Motor2 (motor1, turnCCW, 180) ; motorDrive (motor2, turnCW, 180) ; timeplus=Millis() ; } tandis que (distance > dangerdistance & timeplus-temps < 800) ;

motorBrake(motor1) ; motorBrake(motor2) ; panMotor.write(90); / / tour sonar d’origine position delay(2000) ;

} ElseIf (rightdistance > leftdistance & & rightdistance > dangerdistance) //if droit est moins encombré et super que dangerdistance {//Stop Motor1, Motor2 motorStop(motor1) ; motorStop(motor2) ; panMotor.write(5) ; delay(400) ; time=millis() ; faire //(do turn robot to right while sensor give less than 30cm and time not more then 800 ms) {int nous = sonar.ping() ; distance = uS / US_ROUNDTRIP_CM; / / vérifier les capteurs delay(100); / / attente pour capteurs à stabiliser motorDrive (motor2 turnCCW, 180) ; motorDrive (motor1, turnCW, 180) ; timeplus=Millis() ; } tandis que (distance > dangerdistance & timeplus-temps < 800) ; motorBrake(motor1) ; motorBrake(motor2) ;

panMotor.write(90) ; Delay(2000) ; } else / / si aucune solution {/ / tout arrêter motorBrake(motor1) ; motorBrake(motor2) ; motorsStandby() ; panMotor.write(90) ; delay(9000);}} }

///////////////////////////// FUNCTIONS /////////////////////////////////////////

void motorDrive (boolean motorNumber, boolean motorDirection, int motorSpeed) {/ * cela actionne un moteur spécifié, dans une direction précise, à une vitesse spécifiée:-motorNumber : motor1 ou motor2---> 1 moteur ou moteur 2 - motorDirection : turnCW ou turnCCW---> dans le sens horaire ou antihoraire - motorSpeed : de 0 à 255---> 0 = arrêt / 255 = rapide * /

Boolean pinIn1 ; Se rapporte à AIN1 ou BIN1 (selon le numéro du moteur indiqué)

Spécifier le sens pour activer le moteur / / horaire : AIN1/BIN1 = haute et AIN2/BIN2 = faible / / Counter-horaire : AIN1/BIN1 = LOW et AIN2/BIN2 = haute si (motorDirection == turnCW) pinIn1 = élevé ; else pinIn1 = faible ;

Sélectionnez le moteur tourne et régler la direction et la vitesse if(motorNumber == motor1) {digitalWrite (pinAIN1, pinIn1); digitalWrite (pinAIN2,! pinIn1); //This est à l’opposé de la AIN1 analogWrite (pinPWMA, motorSpeed);} else {digitalWrite (pinBIN1, pinIn1); digitalWrite (pinBIN2,! pinIn1); //This est à l’opposé de la BIN1 analogWrite (pinPWMB, motorSpeed);}

Enfin, assurez-vous que STBY est désactivé - tirez-le haute digitalWrite (pinSTBY, HIGH) ;

}

frein moteur Sub (boolean motorNumber) {/ * ce « Frein » s le moteur spécifié, en définissant la vitesse à zéro * /

Si (motorNumber == motor1) analogWrite (pinPWMA, 0) ; d’autre analogWrite (pinPWMB, 0) ; }

void motorStop (boolean motorNumber) {/ * cela arrête le moteur spécifié en affectant les deux broches IN LOW * / if (motorNumber == motor1) {digitalWrite (pinAIN1, LOW); digitalWrite (pinAIN2, basse);} else {digitalWrite (pinBIN1, LOW); digitalWrite (pinBIN2, basse);}}

void motorsStandby() {/ * cela met les moteurs en Mode veille * / digitalWrite (pinSTBY, LOW);}

Articles Liés

Comment faire un Obstacle évitant Robot

Comment faire un Obstacle évitant Robot

Obstacle évitant robot est un robot simple qui est actionné par un arduino et ce qu'il fait c'est qu'il erre juste autour et évite les obstacles. Il détecte les obstacles avec un capteur à ultrasons HC-SR04 en d'autres termes si le robot détecte obje
Comment faire un obstacle évitant Robot Arduino Style

Comment faire un obstacle évitant Robot Arduino Style

vous avez toujours rêvé de faire un de ces robots cool qui peuvent éviter pratiquement n'importe quel objet. Pourtant, vous n'avez pas assez d'argent pour acheter un de ceux-là vraiment cher, avec des pièces déjà découpées où toutes les matières où l
Comment faire un Obstacle évitant Arduino Robot

Comment faire un Obstacle évitant Arduino Robot

Bonjour à tous ! Dans ce Instructable je vais vous montrer comment faire un robot semblable à la "Mobile Arduino plate-forme expérimentale" (MAEP) que j'ai fait. Il est équipé avec deux moteurs qui peuvent diriger le robot et la capacité de voir
Arduino Obstacle évitant Robot

Arduino Obstacle évitant Robot

Dans ce instructable je vais vous montrer comment faire votre propre obstacle évitant robot !Nous allons utiliser la carte de Arduino uno et un capteur à ultrason. Si le robot détecte un objet devant lui, à l'aide d'un petit servomoteur, il balaye la
BRICOLAGE ligne autonome suivi avec Obstacle évitant Robot (Rover)

BRICOLAGE ligne autonome suivi avec Obstacle évitant Robot (Rover)

AVERTISSEMENT : VÉRIFIEZ VOTRE ORDINATEUR LUMINOSITÉ FAIBLE, ÉTANT DONNÉ QUE CE PROJET ÉMET UN NIVEAU ÉLEVÉ D'AWESOMENESS QUI PEUVENT NUIRE À VOS YEUX:D 3:)Ce projet a participé à la RoboCup 2015 concurrence locale d'Egypte et a remporté le « Best De
Obstacle évitant Robot V2

Obstacle évitant Robot V2

j'ai récemment fait une instructable sur un simple obstacle évitant de robot. Dans ce instructable je mettra en oeuvre un PING panoramique))) capteur, contrairement à la précédent robot qui a capteur était stationnaire. J'ai utilisera ce troisième se
Obstacle évitant Robot

Obstacle évitant Robot

j'ai vu de nombreux obstacle évitant robot construit en ligne notamment chez instructables, alors j'ai décidé de faire une instructable moi-même et fournissez toutes les informations visuelles et écrite que possible. Beaucoup de l'obstacle en évitant
Comment faire une sonde d’oscilloscope Arduino

Comment faire une sonde d’oscilloscope Arduino

ce instructabe vous montrera comment faire une sonde d'oscilloscope arduino pour ces liens, oscilloscope d'un poorman et un oscilloscope de canaux multiples pour arduino /Étape 1: Matériaux et composants Outilsfer à soudersoudureforet de Hobby (si vo
COMMENT FAIRE CHOCOLAT ÉCORCES, FEUILLES, PLAQUES ! MON GÂTEAU CHOCOLAT JARDIN !

COMMENT FAIRE CHOCOLAT ÉCORCES, FEUILLES, PLAQUES ! MON GÂTEAU CHOCOLAT JARDIN !

Dans cette vidéo je vais montrer comment faire des feuilles au chocolat simples et et « aboie » c'est une façon tout à fait unique pour décorer un gâteau ou désert !Étape 1: Comment faire chocolat écorces, feuilles, plaques ! MON GÂTEAU CHOCOLAT JARD
Comment faire votre propre professionnel sheld arduino

Comment faire votre propre professionnel sheld arduino

dans ce instructable je vais vous montrer comment faire votre propre bouclier d'arduino regard professionnel. Dans les proses de la conception du bouclier de l'arduino, je vais utiliser eagle.cad, logiciel arduino & viewplot.Première étape dans la fa
Comment faire un dé électronique aide ARDUINO

Comment faire un dé électronique aide ARDUINO

Hé les gars nous sommes revient avec cool un autre projet Arduino pour vous. Dans ce Instructable, je vais vous montrer comment faire un dé électronique aide Arduino. Je sais que vous l'aimerez. Ne regardez pas la vidéo.Étape 1: composants1. LED (7)2
Comment faire une Radio de l’Arduino Robot commandé

Comment faire une Radio de l’Arduino Robot commandé

J'ai toujours voulu faire une voiture robot à télécommande, mais toujours pensé que c'était trop dur ou trop compliqué. Il y a quelques semaines j'ai fait quelques recherches réel enfin et s'est rendu compte qu'il est beaucoup plus facile à faire que
Comment faire le plus simple Breadboard Arduino Uno... JAMAIS ! -Le Breduino ! (& Comment télécharger croquis directement à elle!!) With Additional Hardware Options - UPDATED - JULY 2013

Comment faire le plus simple Breadboard Arduino Uno... JAMAIS ! -Le Breduino ! (& Comment télécharger croquis directement à elle!!) With Additional Hardware Options - UPDATED - JULY 2013

Étape 1: Section 1 - bâtiment l'alimentation régulée 5 volts ! Okay now before i start, something about my notes for my step-by-step PICTURE instructables that i Love to create:"J'ai utilisé pour étiqueter toutes mes photos dans mon instructables, ma
Comment faire un jeu de Robot de la guitare RockBand !

Comment faire un jeu de Robot de la guitare RockBand !

Pour mon premier instructable...Ce que je peux dire, j'aime à tambour loin sur le plateau de rockband mais il est rare que j'ai quelqu'un pour jouer avec moi ; peut-être, j'ai besoin de plus d'amis, mais hors de mon life(jk) apparemment solitaire vie