Carro RC a Arduino Robot con sensores múltiples (8 / 10 paso)

Paso 8: Copie este dibujo en el IDE y subir a tu Arduino

 /* Sketch written by ImMrRoboto to convert an RC truck into a robot using 3 PING sensors, an Arduino UNO and a SEEED Studio Motor Shield. It is built upon PING example code by Tom Igoe and a motor shield tutorial sketch by SEEED Studio. */ int pinI1=8;//define I1 interface int pinI2=11;//define I2 interface int speedpinA=9;//enable motor A int pinI3=12;//define I3 interface int pinI4=13;//define I4 interface int steerpinB=10;//enable motor B int speed_drive =420;//define the speed of drive motor int speed_steer =1524;//define the speed of steering motor const int pingPin_R = 7;//sets the pin for the PING sensor on the right side of the car const int pingPin_C = 6;//sets the pin for the PING sensor in the center side of the car const int pingPin_L = 5;//sets the pin for the PING sensor on the left side of the car long duration_C, inches_C,duration_R, inches_R,duration_L, inches_L; void setup() { pinMode(pinI1,OUTPUT); pinMode(pinI2,OUTPUT); pinMode(speedpinA,OUTPUT); pinMode(pinI3,OUTPUT); pinMode(pinI4,OUTPUT); pinMode(steerpinB,OUTPUT); } void loop() { int i; int j = 1; delay(5000); for(i=0; i<1; i*1){ j++; getping_all(); //all clear, no obstacles within 30" in any direction if(inches_C >= 30 && inches_R >= 30 && inches_L >= 30) { forward(); } //obstacle(s) within 0-6" range else if (inches_L < 6 || inches_C < 6 || inches_R < 6) { stop(); backward(); delay(1500); stop(); if(j%3 == 0){ //This if/else statement is designed to build a little "randomness" back_right(); //into the robot's movements, so it is less likely to become stuck back_right(); //in a loop, performing the same actions over and over which only. left(); j=1; } else{ back_left(); back_left(); right(); } } //obstacle(s) within 6"-12" range //obstacle on left and center and right else if (inches_R < 12 && inches_C < 12 && inches_L < 12) { stop(); backward(); delay(1500); back_left(); stop(); right(); forward(); } //obstacle on center OR left and right else if (inches_L >= 12 && inches_R >= 12 && inches_C < 12 || inches_C >= 12 && inches_R < 12 && inches_L < 12) { stop(); backward(); delay(1500); back_left(); stop(); right(); forward(); } //obstacle on left and center else if (inches_R >= 12 && inches_C < 12 && inches_L < 12) { stop(); backward(); delay(1500); back_left(); } //obstacle on right and center else if (inches_L >= 12 && inches_C < 12 && inches_R < 12) { stop(); backward(); delay(1500); back_right(); } //obstacle on right else if (inches_L >= 12 && inches_C >= 12 && inches_R < 12) { left(); left(); } //obstacle on left else if (inches_R >= 12 && inches_C >= 12 && inches_L < 12) { right(); right(); } //obstacle(s) within 12"-30" range //obstacle on left and center else if (inches_R >= 30 && inches_C < 30 && inches_L < 30) { right(); right(); } //obstacle on right and center else if (inches_L >= 30 && inches_C < 30 && inches_R < 30) { left(); left(); } //obstacle on right and left else if (inches_C >= 30 && inches_L < 30 && inches_R < 30) { forward(); } //obstacle on right else if (inches_L >= 30 && inches_C >= 30 && inches_R < 30) { left(); } //obstacle on left else if (inches_R >= 30 && inches_C >= 30 && inches_L < 30) { right(); } //obstacle on center else if (inches_L >= 30 && inches_R >= 30 && inches_C < 30) { if(j % 2 == 0){ left(); j=1; } else{ right(); } } } } void forward() {// turns on drive motor in forward and leaves it on analogWrite(speedpinA,speed_drive);//inputs speed_drive value to set the speed digitalWrite(pinI2,LOW);//turn DC Motor A move anticlockwise digitalWrite(pinI1,HIGH); } void backward()// {// turns on drive motor in reverse and leaves it on analogWrite(speedpinA,speed_drive);//inputs speed_drive value to set the speed digitalWrite(pinI2,HIGH);//turn DC Motor A move clockwise digitalWrite(pinI1,LOW); } void right()// { analogWrite(steerpinB,speed_steer); digitalWrite(pinI4,HIGH);//turn DC Motor B move clockwise digitalWrite(pinI3,LOW); forward(); delay(300); analogWrite(steerpinB,LOW); } void back_left()// { analogWrite(steerpinB,speed_steer); digitalWrite(pinI4,HIGH);//turn DC Motor B move clockwise digitalWrite(pinI3,LOW); delay(250); backward(); delay(500); stop(); delay(250); } void left()// { analogWrite(steerpinB,speed_steer); digitalWrite(pinI4,LOW);//turn DC Motor B move anticlockwise digitalWrite(pinI3,HIGH); forward(); delay(300); analogWrite(steerpinB,LOW); } void back_right()// { analogWrite(steerpinB,speed_steer); digitalWrite(pinI4,LOW);//turn DC Motor B move anticlockwise digitalWrite(pinI3,HIGH); delay(250); backward(); delay(500); stop(); delay(250); } void stop()//stop both motors { digitalWrite(speedpinA,LOW);// Unenble the pin, to stop the motor. digitalWrite(steerpinB,LOW);// Unenble the pin, to stop the motor. } void getping_C()//get distance from center PING { pinMode(pingPin_C, OUTPUT); digitalWrite(pingPin_C, LOW); delayMicroseconds(2); digitalWrite(pingPin_C, HIGH); delayMicroseconds(5); digitalWrite(pingPin_C, LOW); pinMode(pingPin_C, INPUT); duration_C = pulseIn(pingPin_C, HIGH); inches_C = microsecondsToInches(duration_C); } void getping_R()//get distance from right PING { pinMode(pingPin_R, OUTPUT); digitalWrite(pingPin_R, LOW); delayMicroseconds(2); digitalWrite(pingPin_R, HIGH); delayMicroseconds(5); digitalWrite(pingPin_R, LOW); pinMode(pingPin_R, INPUT); duration_R = pulseIn(pingPin_R, HIGH); inches_R = microsecondsToInches(duration_R); } void getping_L()//get distance from left PING { pinMode(pingPin_L, OUTPUT); digitalWrite(pingPin_L, LOW); delayMicroseconds(2); digitalWrite(pingPin_L, HIGH); delayMicroseconds(5); digitalWrite(pingPin_L, LOW); pinMode(pingPin_L, INPUT); duration_L = pulseIn(pingPin_L, HIGH); inches_L = microsecondsToInches(duration_L); } void getping_all() { getping_C(); delay(2); getping_R(); delay(2); getping_L(); delay(2); } long microsecondsToInches(long microseconds){ return microseconds / 74 / 2;} /* The above converts the time of the return to inches as explained here: <a href="http://learn.parallax.com/kickstart/28015" rel="nofollow">http://learn.parallax.com/kickstart/28015 </a>*/ 

Artículos Relacionados

Arduino Robot con menor costo

Arduino Robot con menor costo

ME VEN EN EL CIUDAD DE NUEVA YORK MAKER FAIRE!Todo comenzó con esto:Arduino Robot Challenge: ¿Económicamente puede crear un robot utilizando un Arduino para 5 º grado?Espero que este instructable tiene una cierta elegancia en su sencillez y le conven
El reloj de la historia: Arduino LCD con sensores de la tapa

El reloj de la historia: Arduino LCD con sensores de la tapa

Este es aún otro Arduino LCD reloj, pero con un giro; Este reloj sabe algunas fiestas y cumpleaños, realizar cálculos sobre la marcha de a qué edad una persona es y entonces Mostrar la información en la pantalla LCD. Me inspiré a hacer este reloj por
JabberBot! El Arduino robot con un cerebro de ATMega y bluetooth braun! :-)

JabberBot! El Arduino robot con un cerebro de ATMega y bluetooth braun! :-)

JabberBot es controlado por una aplicación Android sobre una conexión serial bluetooth.Las entrañas de la misma se basan en una adaptación de I2C de Adafruit WaveShield y MotorShield.El módulo bluetooth es un Bluetooth Mate plata de Sparkfun.¿Qué hac
4wd de Arduino robot con el sensor ping "J-Bot"

4wd de Arduino robot con el sensor ping "J-Bot"

nivel de experiencia: intermedio (requiere de soldadura)Tiempo requerido: 3 a 5 horas dependiendo de la experienciaJ-BOT Kit JamecoAlguien mencionó que Jameco necesitaba una mascota robótica. Siempre he sido un manitas, especialmente con la electróni
Cambio de uso de Arduino registra con sensores de ultrasonidos

Cambio de uso de Arduino registra con sensores de ultrasonidos

El módulo sensor ultrasonido HC-SR04 de gama es ideal para detección de distancias que pueden utilizarse como insumo para sus proyectos de Arduino, pero utilizando múltiples (más de dos) pueden rápidamente te costará un montón de alfileres.Este Instr
Arduino Nano con sensor DHT y OLED

Arduino Nano con sensor DHT y OLED

En este tutorial voy a describir cómo utilizar un sensor DHT en un Arduino Nano y OLED de pantalla.Paso 1: introducciónHola,Mi nombre es Nick Hendriks y vivo en Holanda. No tengo experiencia con Arduino o los componentes utilizados, pero con la lectu
Arduino-Datalogger con Sensor de temperatura y fotorresistencia

Arduino-Datalogger con Sensor de temperatura y fotorresistencia

en este proyecto que voy a crear un simple Datalogger con mi Arduino y un escudo de Ethernet.Va a utilizar un fotoresistor y un sensor de temperatura y toda la información se almacenará en una tarjeta micro SD.La idea es que se pueden aplicar a cualq
Arduino termostato con sensor TC74

Arduino termostato con sensor TC74

Hola a todos!Esta es una guía rápida sobre cómo usar un Arduino © controlar si un ventilador de enfriamiento y un calentador se activa dependiendo de la temperatura detectada de un sensor TC74 Arduino.Esto es para un proyecto final para una clase de
Obstáculo, evitando Robot con sensores de infrarrojos sin microcontrolador

Obstáculo, evitando Robot con sensores de infrarrojos sin microcontrolador

Bien este es un proyecto mayor, hizo en 2014 en el mes de julio o agosto, pensaba compartir con ustedes chicos. Su un obstáculo sencillo evitar el robot que utiliza sensores infrarrojos y funciona sin microcontrolador. Los sensores IR utiliza IC opam
Arduino Nano: Con Sensor de resistencia pasiva de la foto de Visuino

Arduino Nano: Con Sensor de resistencia pasiva de la foto de Visuino

Fotorresistores están entre los más populares sensores de nivel de iluminación para Arduino. Son fácil de usar, y sin embargo, hay algunas sorpresas inesperadas, sobre todo cuando tratamos de usar módulos preparados por otra persona.En este Instructa
Arduino Robot con pistola de bobina abejón de la pistola de gauss

Arduino Robot con pistola de bobina abejón de la pistola de gauss

Inversor 12V-220V, 2 * 680uF condensadores, bobinas, mira láser, 2servo, proyectil de 4mmSi desea más información por favor escriba en Comentarios.
(con Video) Básicos Arduino Robot buscador de luz!

(con Video) Básicos Arduino Robot buscador de luz!

Muchas veces tengo Google para "Arduino Robot" con la esperanza de encontrar un robot para construir. Termino por encontrar muchas versiones de un obstáculo, evitando el robot que utiliza ya sea un infrarrojo o un sensor de telémetro sonar monta
Empezar a trabajar con sensores de distancia y Arduino

Empezar a trabajar con sensores de distancia y Arduino

Se trata de una guía de inicio para el uso de sensores de distancia con Arduino y algunos procesamiento. Hemos utilizado estos sensores:GP2Y0A21YK0F SHARPUnidad de Sensor de medición de distanciaCompuesto por una combinación integrada de PSD (detecto
Mi línea de Arduino después de Robot!!!!!! -Con Sensor de reflectancia Pololu QTR-6A IR matriz

Mi línea de Arduino después de Robot!!!!!! -Con Sensor de reflectancia Pololu QTR-6A IR matriz

usé una Arduino Duemillanove con el ATMega 328. Propulsión es proporcionada por los dos paralaje Futaba Servos de rotación continua. Mi sensor es el Sensor de reflectancia Pololu QTR-6A IR matriz, y está todo apagado 4 baterías recargables de NiMH Du