Question
Trying to put these two code together but it doesnt work. First Code is Robot Arduino Avoiding Obstacle. Second Code is a bluetooth code to
Trying to put these two code together but it doesnt work.
First Code is Robot Arduino Avoiding Obstacle. Second Code is a bluetooth code to control it when we want.. Please help.
#include
#include
#include
#define TRIG_PIN A4
#define ECHO_PIN A5
#define MAX_DISTANCE 200
#define MAX_SPEED 190 // sets speed of DC motors
#define MAX_SPEED_OFFSET 20
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
AF_DCMotor motor1(1, MOTOR12_64KHZ);
AF_DCMotor motor2(3, MOTOR12_64KHZ);
Servo myservo;
//++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++
boolean goesForward=false;
int distance = 100;
int speedSet = 0;
void setup() {
myservo.attach(9);
myservo.write(65);
delay(2000);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
}
void loop() {
int distanceR = 0;
int distanceL = 0;
delay(40);
if(distance<=15)
{
moveStop();
delay(100);
moveBackward();
delay(300);
moveStop();
delay(200);
distanceR = lookRight();
delay(200);
distanceL = lookLeft();
delay(200);
delay(50);
if(distanceR>=distanceL)
{
turnRight();
moveStop();
}else
{
turnLeft();
moveStop();
}
}else
{
moveForward();
}
distance = readPing();
}
int lookRight()
{
myservo.write(0);
delay(500);
int distance = readPing();
delay(100);
myservo.write(65);
return distance;
}
int lookLeft()
{
myservo.write(125);
delay(500);
int distance = readPing();
delay(100);
myservo.write(65);
return distance;
delay(100);
}
int readPing() {
delay(70);
int cm = sonar.ping_cm();
if(cm==0)
{
cm = 250;
}
return cm;
}
void moveStop() {
motor1.run(RELEASE);
motor2.run(RELEASE);
}
void moveForward() {
if(!goesForward)
{
goesForward=true;
motor1.run(FORWARD);
motor2.run(FORWARD);
for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly
{
motor1.setSpeed(speedSet);
motor2.setSpeed(speedSet+MAX_SPEED_OFFSET);
delay(5);
}
}
}
void moveBackward() {
goesForward=false;
motor1.run(BACKWARD);
motor2.run(BACKWARD);
for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly
{
motor1.setSpeed(speedSet);
motor2.setSpeed(speedSet+MAX_SPEED_OFFSET);
delay(5);
}
}
void turnRight() {
motor1.run(FORWARD);
motor2.run(BACKWARD);
delay(300);
motor1.run(FORWARD);
motor2.run(FORWARD);
}
void turnLeft() {
motor1.run(BACKWARD);
motor2.run(FORWARD);
delay(300);
motor1.run(FORWARD);
motor2.run(FORWARD);
}
#include
AF_DCMotor motor1(1, MOTOR12_64KHZ);
AF_DCMotor motor2(3, MOTOR12_64KHZ);
#include
#define RX 50
#define TX 51
SoftwareSerial btSerial(RX, TX);
String readString;
String comand = "";
void setup() {
btSerial.begin(9600);
Serial.begin(9600);
motor1.setSpeed(250);
motor2.setSpeed(250);
}
char c ;
void loop() {
if (btSerial.available()) {
while ( btSerial.available()) {
c = (char) btSerial.read();
readString += c;
}
}
if (readString.length() > 0) {
Serial.println(readString);
if (readString == "F") {
motor1.run (FORWARD);
motor2.run (FORWARD);
delay(500);
}
if (readString == "B") {
motor1.run (BACKWARD);
motor2.run (BACKWARD);
delay(500);
}
if (readString.equals("R")) {
motor1.run (FORWARD);
motor2.run (BACKWARD);
delay(500);
}
if (readString.equals("L")) {
motor1.run (BACKWARD);
motor2.run (FORWARD);
delay(500);
}
if (readString.equals("S")) {
motor1.run (RELEASE);
motor2.run (RELEASE);
delay(500);
}
readString = "";
}
}
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started