[youtube]-VyTQuTkU20[/youtube]
I NEED HELP WITH IT, I WANT IT TO STOP WHEN AN OBJECT IS SEEN, THEN TURN PING)) TO SENSE AND CHOOSE THE BEST WAY TO GO
CODE...
#include <Servo.h>
int pin6 = 6;
int pin7 = 7;
int pin13 = 13;
int pin2 = 2; // PIN DE SEÑAL PARA EL PARALLAX
int valor = 0;
int pin2Value = 0;
int timecount = 0; // Echo counter
Servo myservo1;
Servo myservo2;
Servo myservo3;
int bumperisquierdo = 0;
int bumperderecho = 0;
int val = 0;
void setup() {
// crea objetos y los asigna a mines
myservo1.attach(9);
myservo2.attach(10);
myservo3.attach(11);
pinMode(pin6, INPUT);
pinMode(pin7, INPUT);
digitalWrite(pin6,HIGH);
digitalWrite(pin7,HIGH);
}
void loop()
// comienza a moverse el robot hacia adelante
{
myservo1.write(100);
myservo2.write(80);
myservo3.write(90);
digitalWrite(pin13, LOW);
parallax(); //arranca el parallax dentro del loop
//////////////////////////////////////////////////////////////////////////////////////////////////////
if(timecount < 400) //lee el parallax mientras avanza, si baja de 400
{
miraalaizquierda(); // mira a la izquierda y opera sefun funcion
}
else (timecount >400);
{
myservo1.write(100);
myservo2.write(70);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//////bumpers//////
{
val = digitalRead(pin6);
if (val == LOW)
parader();
}
{
val = digitalRead(pin7);
if (val == LOW)
paraiz();
}
}
void parallax()
{
timecount = 0;
valor = 0;
pinMode(pin2, OUTPUT); // PONE AL pin2 COMO OUTPUT
/* Send low-high-low pulse to activate the trigger pulse of the sensor
* -------------------------------------------------------------------
*/
digitalWrite(pin2, LOW); // Send low pulse
delayMicroseconds(2); // Wait for 2 microseconds
digitalWrite(pin2, HIGH); // Send high pulse
delayMicroseconds(5); // Wait for 5 microseconds
digitalWrite(pin2, LOW); // Holdoff
pinMode(pin2, INPUT); // Switch signalpin to input
valor = digitalRead(pin2); // Append signal value to val
while(valor == LOW) { // Loop until pin reads a high value
valor = digitalRead(pin2);
}
while(valor == HIGH) { // Loop until pin reads a high value
valor = digitalRead(pin2);
timecount = timecount +1; // Count echo pulse time
}
pin2Value = timecount;
{
delay(100);
}
}
void miraalaizquierda()
{
do
{
myservo3.write(10);
parallax();
myservo1.write(20);
}
while(timecount < 400);
{
// do
// {
// miraaladerecha(); // mira a la derecha y opera sefun funcion
// }
// while(timecount < 400); // si al voltear a la izquierda no ve obstaculo sale de esta condicional
//
}
}
void miraaladerecha()
{
myservo3.write(170);
{
parallax();
myservo2.write(140);
}
}
void parader()
{
myservo2.write(170);
delay(2000);
}
void paraiz()
{
myservo1.write(80);
delay(2000);
}