So i making a selfdriving robot but i my code is not working for somme reason my left motor is giving rapid pulses instead of giving a single puls so ther for my robot left weel is not spining .
#include <AFMotor.h>
#include <AFMotor.h> //import your motor shield library
#define trigPin 12 // define the pins of your sensor
#define echoPin 13
#define trigPin1 8 // define the pins of your sensor
#define echoPin1 9
#define trigPin2 10 // define the pins of your sensor
#define echoPin2 11
AF_DCMotor motor1(1,MOTOR12_8KHZ); // set up motors.
AF_DCMotor motor2(2,MOTOR12_8KHZ);
void setup() {
Serial.begin(9600); // begin serial communitication
Serial.println("Motor test!");
pinMode(trigPin, OUTPUT);// set the trig pin to output (Send sound waves)
pinMode(echoPin, INPUT);// set the echo pin to input (recieve sound waves)
pinMode(trigPin1, OUTPUT);// set the trig pin to output (Send sound waves)
pinMode(echoPin1, INPUT);// set the echo pin to input (recieve sound waves)
pinMode(trigPin2, OUTPUT);// set the trig pin to output (Send sound waves)
pinMode(echoPin2, INPUT);// set the echo pin to input (recieve sound waves)
motor1.setSpeed(250); //set the speed of the motors, between 0-255
motor2.setSpeed (250);
}
void loop() {
long duration, distance, duration1, distance1, duration2, distance2; // start the scan
digitalWrite(trigPin, LOW);
delayMicroseconds(2); // delays are required for a succesful sensor operation.
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); //this delay is required as well!
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;// convert the distance to centimeters.
if (distance < 35)/*if there's an obstacle 25 centimers, ahead, do the following: */ {
Serial.println ("Close Obstacle detected!" );
Serial.println ("Obstacle Details:");
Serial.print ("Distance From Robot is " );
Serial.print ( distance);
Serial.print ( " CM!");// print out the distance in centimeters.
Serial.println (" The obstacle is declared a threat due to close distance. ");
Serial.println (" Turning !");
;motor1.run(BACKWARD); // Turn as long as there's an obstacle ahead.
motor2.run (FORWARD);
}
else {
Serial.println ("No obstacle detected. going forward");
delay (15);
motor2.run(BACKWARD); //if there's no obstacle ahead, Go Forward!
motor1.run(BACKWARD);
}
digitalWrite(trigPin1, LOW);
delayMicroseconds(2); // delays are required for a succesful sensor operation.
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10); //this delay is required as well!
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = (duration1/2) / 29.1;// convert the distance to centimeters.
if (distance1 < 30)/*if there's an obstacle 25 centimers, ahead, do the following: */ {
Serial.println ("Close Obstacle detected!" );
Serial.println ("Obstacle Details:");
Serial.print ("Distance111 From Robot is " );
Serial.print ( distance1);
Serial.print ( " CM!");// print out the distance in centimeters.
Serial.println (" The obstacle is declared a threat due to close distance. ");
Serial.println (" Turning !");
;motor1.run(BACKWARD); // Turn as long as there's an obstacle ahead.
motor2.run (FORWARD);
}
else {
Serial.println ("No obstacle detected. going forward");
delay (15);
motor2.run(BACKWARD); //if there's no obstacle ahead, Go Forward!
motor1.run(BACKWARD);
}
digitalWrite(trigPin2, LOW);
delayMicroseconds(2); // delays are required for a succesful sensor operation.
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10); //this delay is required as well!
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = (duration2/2) / 29.1;// convert the distance to centimeters.
if (distance2 < 30)/*if there's an obstacle 25 centimers, ahead, do the following: */ {
Serial.println ("Close Obstacle detected!" );
Serial.println ("Obstacle Details:");
Serial.print ("Distance2222 From Robot is " );
Serial.print ( distance2);
Serial.print ( " CM!");// print out the distance in centimeters.
Serial.println (" The obstacle is declared a threat due to close distance. ");
Serial.println (" Turning !");
;motor1.run(FORWARD); // Turn as long as there's an obstacle ahead.
motor2.run (BACKWARD);
}
else {
Serial.println ("No obstacle detected. going forward");
delay (15);
motor2.run(BACKWARD); //if there's no obstacle ahead, Go Forward!
motor1.run(BACKWARD);
;}
}