The following code works perfectly util I uncomment the lines motor1.run and motor2.run
Then the motors start running and the Ping Sensor no longer seems to read any info.
What am I missing?
The following video shows what I mean.
Once the two lines are uncommented, the motors start running but the Ping no longer receives and input.
#include <AFMotor.h>
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(4);
const int serialPeriod = 250; // only print to the serial console every 1/4 second
unsigned long timeSerialDelay = 0;
const int loopPeriod = 20; // a period of 20ms = a frequency of 50Hz
unsigned long timeLoopDelay = 0;
// specify the trig & echo pins used for the ultrasonic sensors
const int ultrasonic2TrigPin = 8;
const int ultrasonic2EchoPin = 9;
int ultrasonic2Distance;
int ultrasonic2Duration;
void setup()
{
Serial.begin(9600);
// ultrasonic sensor pin configurations
pinMode(ultrasonic2TrigPin, OUTPUT);
pinMode(ultrasonic2EchoPin, INPUT);
}
void loop()
{
debugOutput(); // prints debugging messages to the serial console
if(millis() - timeLoopDelay >= loopPeriod)
{
readUltrasonicSensors(); // read and store the measured distance
timeLoopDelay = millis();
}
if (ultrasonic2Distance<=200)
{
Motor1.setSpeed(255);
Motor2.setSpeed(255);
// Motor1.run(FORWARD);
// Motor2.run(FORWARD);
}
else
{
Motor1.setSpeed(0);
Motor2.setSpeed(0);
// Motor1.run(BRAKE);
// Motor2.run(BRAKE);
}
}
void readUltrasonicSensors()
{
// ultrasonic 2
digitalWrite(ultrasonic2TrigPin, HIGH);
delayMicroseconds(10); // must keep the trig pin high for at least 10us
digitalWrite(ultrasonic2TrigPin, LOW);
ultrasonic2Duration = pulseIn(ultrasonic2EchoPin, HIGH);
ultrasonic2Distance = (ultrasonic2Duration/2)/29;
}
void debugOutput()
{
if((millis() - timeSerialDelay) > serialPeriod)
{
Serial.print("ultrasonic2Distance: ");
Serial.print(ultrasonic2Distance);
Serial.print("cm: ");
Serial.println();
timeSerialDelay = millis();
}
}