Agregar bigotes de detección de obstáculo a su Robot (5 / 6 paso)

Paso 5: programación

Con los bigotes ahora conectado a todo lo que necesitamos hacer es añadir algo de código.

Lo que hace

  • El programa impulsará el robot hasta que uno de los bigotes encuentra algo, él entonces invertir de 500 milisegundos después aleatoriamente girar izquierda o derecha para un tiempo de entre 300 y 1500 milisegundos, antes de seguir adelante con otro obstáculo.

Para aquellos interesados en conseguir simplemente que allí son dos opciones.

Opción 1 - descargar y descomprimir

  • Descargar el archivo zip adjunto (07_SERB_Whiskers.zip)
  • Descomprímalo en el directorio de sketch de Arduino (por defecto /My documentos/Arduino /)
  • Iniciar el entorno de Arduino y cargar el bosquejo (_SERB_Whiskers)
  • subir y empezar a jugar

Opción 2 - copiar y pegar

  • Copie el código de Arduino desde abajo
  • Péguelo en el entorno de desarrollo Arduino.
  • subir y empezar a jugar

Apéndice 1 - código de Arduino (_SERB_Whiskers)

 /***************************************************************** * Arduino Controlled Servo Robot (SERB) - Whisker Avoidance * * For more details visit: http://www.oomlout.com/serb * * * * Behaviour: Uses two wire whiskers, to bump into obstacles and * * change direction accordingly. It will poll the * * whiskers and when one is found to be tripped it * * will reverse for 500 milliseconds then * * turn randomly left or right for a random time * * between 300 and 1500 milliseconds * * * * Wiring: --Arduino Controlled Servo Robot-- * * Right Servo Signal - pin 9 * * Left Servo Signal - pin 10 * * --Whisker Wiring-- * * right whisker - pin 6 * * left whisker - pin 7 * * whisker common - ground * * * * License: This work is licenced under the Creative Commons * * Attribution-Share Alike 3.0 Unported License. To * * view a copy of this licence, visit * * http://creativecommons.org/licenses/by-sa/3.0/ * * or send a letter to Creative Commons, 171 Second * * Street, Suite 300, San Francisco, California 94105, * * USA. * * * ****************************************************************///----------------------------------------------------------------// START OF WHISKER PREAMBLE#define RIGHTWHISKER 6 //the pin the right whisker is attached to#define LEFTWHISKER 7 //the pin the left whisker is attached to//----------------------------------------------------------------// START OF ARDUINO CONTROLLED SERVO ROBOT (SERB) PREAMBLE#include <Servo.h>#define LEFTSERVOPIN 10 //The pin the left Servo is connected to#define RIGHTSERVOPIN 9 //The pin the right Servo is connected to#define MAXSPEED 30 //due to the way continuous rotation servos //work maximum speed is reached at a much //lower value than 90 (this value will change //depending on your servos) (for Parallax servos) //20 will give you full range 10 makes it very //controllable but a little slowServo leftServo; Servo rightServo; int leftSpeed; //sets the speed of the robot (left servos) //a percentage between -MAXSPEED and MAXSPEEDint rightSpeed; //sets the speed of the robot (both servos) //a percentage between -MAXSPEED and MAXSPEEDint speed = 100; //used for simple control (goForward etc.) //a percentage between 0 and MAXSPEED// END OF THIS PROGRAMS PREAMBLE//----------------------------------------------------------------void setup(){ beginSerial (9600); //Starts the serial port serbSetup(); //adds the servos and prepares all //SERB related variables whiskerSetup(); }/* * The main loop * Sends the robot forward then checks it's whiskers, if one is pressed * the robot will reverse then turn and head forward once more */void loop(){ goForward(); //sends the robot forward checkWhiskers(); //checks to see if a whisker is pressed}//------------------------------------------------------------------------//START WHISKER ROUTINESvoid whiskerSetup(){ pinMode(RIGHTWHISKER, INPUT); //Sets the right whisker's pin to be an input pinMode(LEFTWHISKER, INPUT); //Sets the left whisker's pin to be an input digitalWrite(RIGHTWHISKER, HIGH);//Sets the right whisker pin's internal pullup //resistor (this means the pin is high when //there is no signal attached and reads low //when a negative signal is attached digitalWrite(LEFTWHISKER, HIGH);//Sets the left whisker pin's internal pullup //resistor}void checkWhiskers(){ if(!digitalRead(RIGHTWHISKER)){reverseAndTurn();} //if the right whisker is pressed //then reverse and turn if(!digitalRead(LEFTWHISKER)){reverseAndTurn();} //if the left whisker is pressed //then reverse and turn}void reverseAndTurn(){ goBackward(); //goes backward delay(500); //for half a second turnRandom(300,1500); //turns randomly for a time between 300 and 1500 milliseconds}//END OF WHISKER ROUTINES//------------------------------------------------------------------------//------------------------------------------------------------------------//START OF ARDUINO CONTROLLED SERVO ROBOT (SERB) ROUTINES/* * sets up your arduino to address your SERB using the included * routines */void serbSetup(){ setSpeed(speed); pinMode(LEFTSERVOPIN, OUTPUT); //sets the left servo signal pin //to output pinMode(RIGHTSERVOPIN, OUTPUT); //sets the right servo signal pin //to output leftServo.attach(LEFTSERVOPIN); //attaches left servo rightServo.attach(RIGHTSERVOPIN); //attaches right servo goStop();}/* * sets the speed of the robot between 0-(stopped) and 100-(full speed) * NOTE: speed will not change the current speed you must change speed * then call one of the go methods before changes occur. */void setSpeed(int newSpeed){ if(newSpeed >= 100) { newSpeed = 100; } //if speed is greater than 100 //make it 100 if(newSpeed <= 0) { newSpeed = 0; } //if speed is less than 0 make //it 0 speed = newSpeed * MAXSPEED / 100; //scales the speed to be //between 0 and MAXSPEED}/* * sets the speed of the robots rightServo between -100-(reversed) and 100-(forward) * NOTE: calls to this routine will take effect imediatly */void setSpeedRight(int newSpeed){ if(newSpeed >= 100) { newSpeed = 100; } //if speed is greater than 100 //make it 100 if(newSpeed <= -100) { newSpeed = -100; } //if speed is less than -100 make //it -100 rightSpeed = newSpeed * MAXSPEED / 100; //scales the speed to be //between -MAXSPEED and MAXSPEED rightServo.write(90 - rightSpeed); //sends the new value to the servo}/* * sets the speed of the robots leftServo between -100-(reversed) and 100-(forward) * NOTE: calls to this routine will take effect immediatly */void setSpeedLeft(int newSpeed){ if(newSpeed >= 100) {newSpeed = 100;} //if speed is greater than 100 //make it 100 if(newSpeed <= -100){newSpeed = -100;}//if speed is less than -100 //make it -100 leftSpeed = newSpeed * MAXSPEED / 100;//scales the speed to be //between -MAXSPEED and MAXSPEED leftServo.write(90 + leftSpeed); //sends the new value to the servo}/* * turns the robot randomly left or right for a random time period between * minTime (milliseconds) and maxTime (milliseconds) */void turnRandom(int minTime, int maxTime){ int choice = random(2); //Random number to decide //between left (1) and right (0) int turnTime = random(minTime,maxTime); //Random number for the pause //time if(choice == 1){ goLeft();} //If random number = 1 then turn //left else {goRight();} //If random number = 0 then turn //right delay(turnTime); //delay for random time }/* * sends the robot forwards */void goForward(){ leftServo.write(90 + speed); rightServo.write(90 - speed);}/* * sends the robot backwards */void goBackward(){ leftServo.write(90 - speed); rightServo.write(90 + speed);}/* * sends the robot right */void goRight(){ leftServo.write(90 + speed); rightServo.write(90 + speed);}/* * sends the robot left */void goLeft(){ leftServo.write(90 - speed); rightServo.write(90 - speed);}/* * stops the robot */void goStop(){ leftServo.write(90); rightServo.write(90);}//END OF ARDUINO CONTROLLED SERVO ROBOT (SERB) ROUTINES//--------------------------------------------------------------------------- 

Artículos Relacionados

Infrarrojos detección de obstáculo rojo

Infrarrojos detección de obstáculo rojo

¿Qué es?Un medio muy fiable de detección de obstáculos mediante refleja infra rojo¿Cómo funciona?El módulo tiene un transmisor de infrarrojos en que ilumina el entorno y un receptor infrarrojo que mide la cantidad de infrarrojo que se refleja. Si la
Robot WiFi con transmisión de video en tiempo real, detección de obstáculo y sensibilidad a la luz

Robot WiFi con transmisión de video en tiempo real, detección de obstáculo y sensibilidad a la luz

INTRODUCCIÓN:Este proyecto es un vehículo robot que puede ser controlado a través de cualquier ordenador de forma inalámbrica mediante un enlace WiFi. Transmite vídeo en tiempo real a la computadora que controla usando el mismo enlace. La cámara que
(Archivos de código fuente para) Cómo hacer un OAWR (obstáculo evitando caminar Robot)

(Archivos de código fuente para) Cómo hacer un OAWR (obstáculo evitando caminar Robot)

esto es una rama Instructable de cómo hacer un OAWR (obstáculo evitando caminar Robot) y contiene versiones de los archivos de ese instructivo en formatos editables (todos agradable y abierto source'ary me gusta pensar).(Si hay cualquier otro archivo
El Wireless, detección de obstáculo, pitido Robot mediante Arduinos!

El Wireless, detección de obstáculo, pitido Robot mediante Arduinos!

Esto es un obstáculo controlado inalámbricamente, autónomo detección de robot!Hace un tiempo atrás había hecho este Instructable y quería hacer algunas mejoras importantes desde entonces.Las siguientes son características del robot:-1.he controladas
Detección de obstáculos y ADVERTENCIA - Arduino, ultrasonido y zumbador

Detección de obstáculos y ADVERTENCIA - Arduino, ultrasonido y zumbador

Esto es tutorial para ayudarle a entender ultrasónico y el zumbador y el gomás profundo en el aprendizaje Arduino, siga estos pasos y me dar respuesta por favor.Estoy haciendo para ayudar a mi primo en su proyecto de escuela.Paso 1: Preparar el mater
Cómo hacer un OAWR (obstáculo evitando caminar Robot)

Cómo hacer un OAWR (obstáculo evitando caminar Robot)

este Instructable muestra cómo hacer un pequeño robot a pie que evita obstáculos (al igual que muchas opciones disponibles en el mercado). Pero qué es la diversión en la compra de un juguete cuando en su lugar puede iniciar con un motor, la hoja de p
DTMF basado obstáculo evita el ROBOT

DTMF basado obstáculo evita el ROBOT

se basa en la tecnología de DTMF, por que el coche responde a la baja y alta frecuencia de la u número pulsada en tu teléfono móvil, después de dar un anillo,Paso 1: Diagrama de bloque El trabajo principio detrás del proyecto se ilustra en el diagram
Cómo hacer un obstáculo evitando Arduino Robot

Cómo hacer un obstáculo evitando Arduino Robot

Hola a todos! En este Instructable voy se que muestra cómo hacer un robot similar a la "móvil Arduino plataforma Experimental" (MAEP) que hice. Está equipado con dos motores que pueden dirigir el robot y la habilidad de ver los obstáculos delant
Obstáculo evita el Robot usando Arduino Uno y Sensor de proximidad de infrarrojos

Obstáculo evita el Robot usando Arduino Uno y Sensor de proximidad de infrarrojos

Siga los pasos para crear un obstáculo evitar Robot usando Arduino Uno y IR Sensor de proximidadPaso 1: Piezas necesarias1) Arduino Uno R3 (clon hará)2) sensores de proximidad de IR (2 recomendado)3) chasis con motores4) tablero de5) Junta de control
Cómo hacer un obstáculo evitando Arduino Robot! "Mi Robot V1"

Cómo hacer un obstáculo evitando Arduino Robot! "Mi Robot V1"

Este instructable muestra las instrucciones de pasos para hacer un obstáculo evitando robot con Arduino.Empezar a dejarmi bloghttp://robot4pro.blogspot.com/p/My-robots.htmlPaso 1: Materiales necesariosAquí le damos todo que lo necesario para hacer My
Obstáculo evita el Robot usando placa de relé

Obstáculo evita el Robot usando placa de relé

todos los derechos, así que decidí hacer un robot con una placa de relé. Nunca he utilizado una placa de relé en mi vida y esta fue la primera vez que trabajaba con él. Primero pensé que sería realmente complicado pero resultó que no. He utilizado he
Distancia medición y obstáculo detección usando 89v51rd2fn NXP y sensor ultrasonido HC-SR04.

Distancia medición y obstáculo detección usando 89v51rd2fn NXP y sensor ultrasonido HC-SR04.

Todo el mundo utiliza arduino uno o mega hacer proyectos ya que son fáciles de usar y el código de arduino está fácilmente disponible en el foro de arduino y nadie utiliza atmel, philips u otro microcontrolador para proyectos tales como la codificaci
Desviación de obstáculo de Robot autónomo MICBot

Desviación de obstáculo de Robot autónomo MICBot

MICBot es un robot autónomo para detección de obstáculos y desviaciones y va alrededor,obras interiores o exteriores.Paso 1: Ultrasonido Sensor SFR05 Por lo tanto, esta solución utiliza el sensor de ultrasonidos como una medida de distancia y le perm
Obstáculos del Robot Qtechknow

Obstáculos del Robot Qtechknow

¿Has pensado de controlar su FuzzBot de forma inalámbrica? ¿Quieres hacer un real - life video juego? ¿Quieres aprender sobre la tecnología detrás de NFC y RFID? -el Qtechknow Robot de obstáculos cómo - a guía es para usted!Por favor votar para mí (e