ok i have written a code so that my robot can preform a certain objective. that object is move forward/ turn when needed........ but when one of two of my ping sensor senses an object the robot is to pick up the object and place the object in another location how ever for some reason i cant get the bot to move at all...... can some one please go thur my code real fast and let me know where my problem is........ thanks in advance for all help recieved
#include <Servo.h>
Servo servoHand;
Servo servoWrist;
int ultraSoundSignal1 = 7;
int ultraSoundSignal2 = 4;
int val1 = 0;
int val2 = 0;
int ultrasoundValue1 = 0;
int ultrasoundValue2 = 0;
int timecount1 = 0;
int timecount2 = 0; // Echo counter
int duration1 = 0;
int duration2 = 0;
void setup() {
servoHand.attach(10);
servoWrist.attach(5);
Serial.begin(9600);
//setup channel A
pinMode(12, OUTPUT);
pinMode(9, OUTPUT);
//setup channel B
pinMode(13, OUTPUT);
pinMode(8, OUTPUT);
//setup arm
}
void upandopen()
{
servoWrist.write(130);
servoHand.write(90);
}
void upandclosed()
{
servoWrist.write(130);
servoHand.write(55);
}
void loweredandopen()
{
servoWrist.write(0);
servoHand.write(90);
}
void loweredandclosed()
{
servoWrist.write(0);
servoHand.write(55);
}
void forward()
{
digitalWrite(12, HIGH);
digitalWrite(9, LOW);
analogWrite(3, 255);
digitalWrite(13, LOW);
digitalWrite(8, LOW);
analogWrite(11, 255);
}
void turn_left()
{
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
delay(300);
digitalWrite(12, HIGH);
digitalWrite(9, LOW);
analogWrite(3,65);
digitalWrite(13, HIGH);
digitalWrite(8, LOW);
digitalWrite(11, 65);
delay(300);
}
void turn_right()
{
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
delay(300);
digitalWrite(12, LOW);
digitalWrite(9, LOW);
analogWrite(3,65);
digitalWrite(13, LOW);
digitalWrite(8, LOW);
digitalWrite(11, 65);
delay(300);
}
void dontmove()
{
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
void reverse()
{
digitalWrite(12, LOW);
digitalWrite(9, LOW);
analogWrite(3, 255);
digitalWrite(13, HIGH);
digitalWrite(8, LOW);
analogWrite(11, 255);
}
void u_turn()
{
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
delay(300);
digitalWrite(12, HIGH);
digitalWrite(9, LOW);
analogWrite(3,125);
digitalWrite(13, HIGH);
digitalWrite(8, LOW);
digitalWrite(11, 125);
delay(300);
}
void loop() {
pinMode(ultraSoundSignal1, OUTPUT);
digitalWrite(ultraSoundSignal1, LOW);
delayMicroseconds(2);
digitalWrite(ultraSoundSignal1, HIGH);
delayMicroseconds(5);
digitalWrite(ultraSoundSignal1, LOW);
pinMode(ultraSoundSignal1, INPUT);
duration1 = pulseIn(ultraSoundSignal1, HIGH);
Serial.println(duration1/74/2);
delay(100);
}
{
{
timecount2 = 0;
val2 = 0;
pinMode(ultraSoundSignal2, OUTPUT);
digitalWrite(ultraSoundSignal2, LOW);
delayMicroseconds(2);
digitalWrite(ultraSoundSignal2, HIGH);
delayMicroseconds(5);
digitalWrite(ultraSoundSignal2, LOW);
pinMode(ultraSoundSignal2, INPUT);
duration2 = pulseIn(ultraSoundSignal2, HIGH);
Serial.println(duration2/74/2);
delay(100);
{
ultrasoundValue1 = duration1/74/2;
ultrasoundValue2 = duration2/74/2;
}
upandopen();
while(servoHand.read() == 90 && servoWrist.read() == 130);
{
if (ultrasoundValue2 > 2.00 && ultrasoundValue1 > 16.00 )
{
upandopen();
forward();
}
else if( 16.00 < ultrasoundValue1 && ultrasoundValue2 == 2.00)
{
dontmove();
loweredandclosed();
upandclosed();
u_turn();
}
else if (( 16.00 <= ultrasoundValue1 && ultrasoundValue1 > 32.00) && ( ultrasoundValue2 == 2.00))
{
dontmove();
loweredandclosed();
upandclosed();
u_turn();
}
else if (ultrasoundValue1<= 16.00 && ultrasoundValue2 <= 16.00)
{
dontmove();
turn_left();
forward();
}
else
{
dontmove();
reverse();
}
}
while( servoWrist.read() == 130 && servoHand.read() == 55)
{
if(ultrasoundValue1> 50.00)
{
forward();
}
else if( ultrasoundValue1 < 50.00 && ultrasoundValue1 < 44.00)
{
dontmove();
turn_right();
forward();
}
else if ( ultrasoundValue1 >= 32.00 && ultrasoundValue1 > 10.00)
{
forward();
}
else if ( ultrasoundValue1 < 10.00 && ultrasoundValue2 == 2.00)
{
dontmove();
loweredandopen();
reverse();
delay(100);
upandopen();
u_turn();
}}}}}