i dont get it


i didnt know waht name post
well...
here problem
i wanted obstacle avoiding robo few months , finished (using ping ) simple turn away
but want toi have servo hookedup , make theright , left
here code using
code: [select]
/////obstacle avoiding //////


#include <servo.h>
const int pingpin = 10;            
#define ledpin_right 13                  
#define ledpin_left 12
int motor_one_pin_one=3;          
int motor_one_pin_two=4;          
int motor_two_pin_one=5;          
int motor_two_pin_two=6;
int pos = 0 ;
servo myservo;
long dist_right =0;
long dist_left = 0;

void setup()
{
 myservo.attach(9);
 serial.begin(9600);                    
 pinmode(ledpin_right,output);            
 pinmode(motor_one_pin_one,output);    
 pinmode(motor_one_pin_two,output);    
 pinmode(motor_two_pin_one,output);    
 pinmode(motor_two_pin_two,output);    
}

////loop////

void loop ()

{
 
long duration, cm;
 pinmode(pingpin, output);            
 digitalwrite(pingpin, low);          
 delaymicroseconds(2);
 digitalwrite(pingpin, high);          
 delaymicroseconds(5);
 digitalwrite(pingpin, low);          
 pinmode(pingpin, input);                    
 duration = pulsein(pingpin, high);          
 cm = microsecondstocentimeters(duration);
 serial.print(cm);      
 serial.print("cm");    
 serial.println();
   
 ///servo neck centering///

 myservo.write(80);
   
if (cm > 10 )
 {
 digitalwrite(motor_one_pin_one,high);
 digitalwrite(motor_two_pin_one,low);
 digitalwrite(motor_one_pin_two,high);
 digitalwrite(motor_two_pin_two,low);
 }
 
else if (cm < 10 )
{
drive_stop();

myservo.write(10);
delay(150);
long duration, cm;
pinmode(pingpin, output);            
digitalwrite(pingpin, low);          
delaymicroseconds(2);
digitalwrite(pingpin, high);          
delaymicroseconds(5);
digitalwrite(pingpin, low);          
pinmode(pingpin, input);                    
duration = pulsein(pingpin, high);          
dist_left = microsecondstocentimeters(duration);

serial.print(dist_right);      
serial.print("cm right");
pinmode(pingpin, output);            
digitalwrite(pingpin, low);          
delaymicroseconds(2);
digitalwrite(pingpin, high);          
delaymicroseconds(5);
digitalwrite(pingpin, low);          
pinmode(pingpin, input);                    
duration = pulsein(pingpin, high);          
dist_right = microsecondstocentimeters(duration);
myservo.write(180);
delay(150);
serial.print(dist_left);      
serial.print("cmleft");

if(((dist_right)&&(dist_left))<(10))
   {
     digitalwrite(ledpin_left,low);
     digitalwrite(ledpin_right,low);
     drive_360();
     }
else if((dist_right)<(dist_left))
   {
     digitalwrite(ledpin_left,high);
     digitalwrite(ledpin_right,low);
     drive_left();
   }
else ((dist_right)>(dist_left));
   {
     digitalwrite(ledpin_left,low);
     digitalwrite(ledpin_right,high);
     drive_right();
   }
}
}


//drive , other functions//


long microsecondstocentimeters(long microseconds)
{
 return microseconds / 29 / 2;
}


void drive_forward()
{
 digitalwrite(motor_one_pin_one,high);
 digitalwrite(motor_two_pin_one,low);
 digitalwrite(motor_one_pin_two,high);
 digitalwrite(motor_two_pin_two,low);
 return;
}


void drive_stop()
{
 digitalwrite(motor_one_pin_one,low);
 digitalwrite(motor_two_pin_one,low);
 digitalwrite(motor_one_pin_two,low);
 digitalwrite(motor_two_pin_two,low);
 return;
}

void drive_right()
{
 digitalwrite(motor_one_pin_one,high);
 digitalwrite(motor_two_pin_one,low);
 digitalwrite(motor_one_pin_two,low);
 digitalwrite(motor_two_pin_two,low);
 delay(500);
 return;
}

void drive_left()
{
 digitalwrite(motor_one_pin_one,low);
 digitalwrite(motor_two_pin_one,low);
 digitalwrite(motor_one_pin_two,high);
 digitalwrite(motor_two_pin_two,low);
 delay(500);
 return;
 
}

void drive_360()
{
 digitalwrite(motor_one_pin_one,high);
 digitalwrite(motor_two_pin_one,low);
 digitalwrite(motor_one_pin_two,low);
 digitalwrite(motor_two_pin_two,low);
 delay(500);
 return;
}


now problem until detects obstacle keeps quiet i.e dosent move inch
and after detecting obstacle looks in 1 direction (180 degrees of servo )
and rotates 1 motor
:(
i dont know did wrong guess coding part

and if cm == 10 ?

aside: why perpetuate appallingly bad ping driver code?
it ain't broke don't fix it?


Arduino Forum > Forum 2005-2010 (read only) > Software > Interfacing > i dont get it


arduino

Comments

Popular posts from this blog

CAN'T INSTALL MAMBELFISH 1.5 FROM DIRECTORY - Joomla! Forum - community, help and support

error: expected initializer before 'void'

CPU load monitoring using GPIO and leds - Raspberry Pi Forums