My problem is this:
I'm building a car is controlled via Bluetooth.
The car works.
Adding distance sensor HC04 car.
Now I want that when the car approaches a certain range of cm so the car would go back.
I checked if it works, it works for me part-time.
This means that the car is not connected to bluetooth operation is carried out perfectly I approach the sensor distance and the car was going backwards.
But when the car is connected to a Bluetooth smartphone then test the distance is only when I click on a button in the app.
#include <SoftwareSerial.h>
#define trigPin 2
#define echoPin 3
char dataIn = 'S';
int pinLeft = 10;
int pinRight = 11;
int pinForward = 5;
int pinBack = 6;
int pinfrontLights = 8;
int pinbackLights = 7;
int duration, distance;
char determinant;
char det;
void setup()
{
Serial.begin(9600);
Serial.println( "MosheHadadCar");
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pinLeft, OUTPUT);
pinMode(pinRight, OUTPUT);
pinMode(pinForward, OUTPUT);
pinMode(pinBack, OUTPUT);
pinMode(pinfrontLights, OUTPUT);
pinMode(pinbackLights, OUTPUT);
}
void loop() {
det = check();
while (det == 'F') //forward
{
digitalWrite(pinForward, LOW);
digitalWrite(pinBack, HIGH);
Serial.println("forward");
det = check();
}
while (det == 'B') //Back
{
digitalWrite(pinForward, HIGH);
digitalWrite(pinBack, LOW);
Serial.println("Back");
det = check();
}
while (det == 'L') //left
{
digitalWrite(pinLeft, LOW);
digitalWrite(pinRight, HIGH);
Serial.println("left");
det = check();
}
while (det == 'R') //right
{
digitalWrite(pinLeft, HIGH);
digitalWrite(pinRight, LOW);
Serial.println("right");
det = check();
}
while (det == 'I') //forward right
{
digitalWrite(pinLeft, HIGH);
digitalWrite(pinRight, LOW);
digitalWrite(pinForward, LOW);
digitalWrite(pinBack, HIGH);
Serial.println("forward right");
det = check();
}
while (det == 'J') //back right
{
digitalWrite(pinLeft, HIGH);
digitalWrite(pinRight, LOW);
digitalWrite(pinForward, HIGH);
digitalWrite(pinBack, LOW);
Serial.println("back right");
det = check();
}
while (det == 'G') //forward left
{
digitalWrite(pinLeft, LOW);
digitalWrite(pinRight, HIGH);
digitalWrite(pinForward, LOW);
digitalWrite(pinBack, HIGH);
Serial.println("forward left");
det = check();
}
while (det == 'H') //back left
{
digitalWrite(pinLeft, LOW); \
digitalWrite(pinRight, HIGH);
digitalWrite(pinForward, HIGH);
digitalWrite(pinBack, LOW);
Serial.println("back left");
det = check();
}
while (det == 'S') // stop
{
digitalWrite(pinLeft, HIGH);
digitalWrite(pinRight, HIGH);
digitalWrite(pinForward, HIGH);
digitalWrite(pinBack, HIGH);
det = check();
}
while (det == 'w') // front Lights off
{
digitalWrite(pinfrontLights, LOW);
Serial.println("front Lights off");
det = check();
}
while (det == 'W') // front Lights on
{
digitalWrite(pinfrontLights, HIGH);
Serial.println("front Lights on");
det = check();
}
while (det == 'u') // back Lights off
{
digitalWrite(pinbackLights, LOW);
Serial.println("back Lights off");
det = check();
}
while (det == 'U') // back Lights on
{
digitalWrite(pinbackLights, HIGH);
Serial.println("back Lights on");
det = check();
}
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
if (distance <= 15 ) {
Serial.println("back");
digitalWrite(pinForward, HIGH);
digitalWrite(pinBack, LOW);
Serial.println("Back");
delay(1500);
digitalWrite(pinLeft,HIGH);
digitalWrite(pinRight,HIGH);
digitalWrite(pinForward,HIGH);
digitalWrite(pinBack,HIGH);
}
else {
Serial.print(distance);
Serial.println(" cm");
}
}
int check()
{
if (Serial.available() > 0) //checks the availability of serial communication.
{
dataIn = Serial.read(); //checks the incoming data 'dataIn'..
if (dataIn == 'F')
{
determinant = 'F';
}
else if (dataIn == 'B')
{
determinant = 'B';
}
else if (dataIn == 'L')
{
determinant = 'L';
}
else if (dataIn == 'R')
{
determinant = 'R';
}
else if (dataIn == 'I')
{
determinant = 'I';
}
else if (dataIn == 'J')
{
determinant = 'J';
}
else if (dataIn == 'G')
{
determinant = 'G';
}
else if (dataIn == 'H')
{
determinant = 'H';
}
else if (dataIn == 'S')
{
determinant = 'S';
}
else if (dataIn == 'U')
{
determinant = 'U';
}
else if (dataIn == 'u')
{
determinant = 'u';
}
else if (dataIn == 'W')
{
determinant = 'W';
}
else if (dataIn == 'w')
{
determinant = 'w';
}
}
return determinant;
}