Hi after a long struggle I have finally gotten both my bluetooth codes and running codes to run fine seperatly, however I am unsure as to how I would now merge these two codes together to get my system to work as a whole. I will add the codes below any help and advice would be much appreciated.
BT initializer code:
[code/*
/* Upload this sketch into Seeeduino and press reset*/
// old line: #include <NewSoftSerial.h> //Software Serial Port
#include <SoftwareSerial.h> //new line
#define RxD 3
#define TxD 2
#define DEBUG_ENABLED 1
// old line: NewSoftSerial blueToothSerial(RxD,TxD);
SoftwareSerial blueToothSerial(RxD,TxD); //new line
void setup()
{
Serial.begin(38400);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
setupBlueToothConnection();
}
void loop()
{
char recvChar;
while(1){
if(blueToothSerial.available()){//check if there's any data sent from the remote bluetooth shield
recvChar = blueToothSerial.read();
Serial.print(recvChar);
}
if(Serial.available()){//check if there's any data sent from the local serial terminal, you can add the other applications here
recvChar = Serial.read();
blueToothSerial.print(recvChar);
}
}
}
void setupBlueToothConnection()
{
blueToothSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
blueToothSerial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode
blueToothSerial.print("\r\n+STNA=SeeedBTSlave\r\n"); //set the bluetooth name as "SeeedBTSlave"
blueToothSerial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
delay(2000); // This delay is required.
blueToothSerial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable
Serial.println("The slave bluetooth is inquirable!");
delay(2000); // This delay is required.
blueToothSerial.flush();
}
]
RC running code:
char dataIn = 'S'; //CharacterData coming from the phone.
int pinLeftTrackFB = 13; //Pin controls left track bank forward and backward.
int pinRightTrackFB = 14; //Pin controls right track bank forward and backward.
int BrakeLeftTrackFB = 8; //Pin that enables/disables the left track bank.
int BrakeRightTrackFB = 15; //Pin that enables/disables the right track bank
int pinLeftRightSpeed = 3; //Pin that sets the speed for the Left-Right motor.
int pinLeftTrackSpeed = 11; //Pin that sets the speed for the Left track bank.
int pinRightTrackSpeed = 16; //Pin that sets the speed for the Right track bank.
int pinBrakeLeftTrackFB = 1; //Pin that brakes left track.
int pinBrakeRightTrackFB = 2; //Pin that brakes right track.
int pincamerapower = 4; //Pin that activates power to front camera.
int pinfrontlights = 7; //Pin turns on led’s around tank.
char determinant; //Used in the check function, stores the character received from the phone.
char det; //Used in the loop function, stores the character received from the phone.
int velocity = 0; //Stores the speed based on the character sent by phone.
void setup()
{
// NOTE: Once Bluetooth module is received find the Bluetooth unit number and put it in brackets of serial begin.
Serial.begin(38400); //Initialize serial communication with Bluetooth module at underlined number btu.
pinMode(pinLeftTrackFB, OUTPUT);
pinMode(pinRightTrackFB, OUTPUT);
pinMode(pinBrakeLeftTrackFB, OUTPUT);
pinMode(pinBrakeRightTrackFB, OUTPUT);
pinMode(pinLeftRightSpeed, OUTPUT);
pinMode(pinLeftTrackSpeed, OUTPUT);
pinMode(pinRightTrackSpeed, OUTPUT);
pinMode(pincamerapower, OUTPUT);
pinMode(pinfrontlights, OUTPUT);
}
void loop()
{
det = check();
while (det == 'F') //If incoming data is an F, denotes the function move forward
{
digitalWrite(pinLeftTrackFB, LOW);
digitalWrite(pinRightTrackFB, LOW);
digitalWrite(pinBrakeLeftTrackFB, LOW);
digitalWrite(pinBrakeRightTrackFB, LOW);
analogWrite(pinLeftTrackFB, velocity);
analogWrite(pinRightTrackFB, velocity);
analogWrite(pinLeftTrackSpeed,255);
analogWrite(pinRightTrackSpeed,255);
det = check();
}
while (det == 'B') //if incoming data is a B, move back
{
digitalWrite(pinLeftTrackFB, HIGH);
digitalWrite(pinRightTrackFB, HIGH);
digitalWrite(pinBrakeLeftTrackFB, LOW);
digitalWrite(pinBrakeRightTrackFB, LOW);
analogWrite(pinLeftTrackFB, velocity);
analogWrite(pinRightTrackFB, velocity);
analogWrite(pinLeftTrackSpeed,-255);
analogWrite(pinRightTrackSpeed,-255);
det = check();
}
while (det == 'L') //if incoming data is a L, move wheels left
{
digitalWrite(pinLeftTrackFB, LOW);
digitalWrite(pinRightTrackFB, HIGH);
digitalWrite(pinBrakeLeftTrackFB, LOW);
digitalWrite(pinBrakeRightTrackFB, LOW);
analogWrite(pinLeftTrackFB, velocity);
analogWrite(pinRightTrackFB, velocity);
analogWrite(pinLeftTrackSpeed,0);
analogWrite(pinRightTrackSpeed,255);
det = check();
}
while (det == 'R') //if incoming data is a R, move tank right
{
digitalWrite(pinBrakeLeftTrackFB,HIGH);
digitalWrite(pinBrakeRightTrackFB,LOW);
analogWrite(pinLeftTrackFB, velocity);
analogWrite(pinRightTrackFB, velocity);
analogWrite(pinLeftTrackSpeed,255);
analogWrite(pinRightTrackSpeed,0);
det=check();
}
while (det == 'S') //if incoming data is a S, stop
{
digitalWrite(pinLeftTrackFB, LOW);
digitalWrite(pinRightTrackFB, LOW);
analogWrite(pinLeftTrackSpeed,0);
analogWrite(pinRightTrackSpeed,0);
det = check();
}
while (det == 'W') //if incoming data is a U, turn ON front lights
{
digitalWrite(pinfrontlights, HIGH);
det = check();
}
while (det == 'w') //if incoming data is a u, turn OFF front lights
{
digitalWrite(pinfrontlights, LOW);
det = check();
}
}
int check()
{
if (Serial.available() > 0) //Check for data on the serial lines.
{
dataIn = Serial.read(); //Get the character sent by the phone and store it in '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 == '0')
{
velocity = 0; //"velocity" does not need to be returned.
}
else if (dataIn == '1')
{
velocity = 25;
}
else if (dataIn == '2')
{
velocity = 50;
}
else if (dataIn == '3')
{
velocity = 75;
}
else if (dataIn == '4')
{
velocity = 100;
}
else if (dataIn == '5')
{
velocity = 125;
}
else if (dataIn == '6')
{
velocity = 150;
}
else if (dataIn == '7')
{
velocity = 175;
}
else if (dataIn == '8')
{
velocity = 200;
}
else if (dataIn == '9')
{
velocity = 225;
}
else if (dataIn == 'q')
{
velocity = 255;
}
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;
}