s_premkumar999:
Check your Bluetooth modules default baud rate. is it 9600? Check the module using a direct serial interface and and read the received code for each character you sent by the software to verify is there any extra characters coming with each frame.
i have checked and it is 9600 i have successfully connected to the modul and it works fine
robtillaart:
step 1 : remove all the while loops and do the checking in one placevoid loop()
{
det = check();
if (det == 'F') //if incoming data is a F, move foward
{
desniMotor.run (FORWARD); //right motor moves forward
desniMotor.setSpeed (velocity); // rotational speed of the motor
lijeviMotor.run (FORWARD); // -||-
lijeviMotor.setSpeed (velocity); // -||-
}
else if (det == 'B') //if incoming data is a B, move back
{
desniMotor.run (BACKWARD); //
desniMotor.setSpeed (velocity); //
lijeviMotor.run (BACKWARD); // -||-
lijeviMotor.setSpeed (velocity); //-||-
}
else if (det == 'L') //if incoming data is a L, move wheels left
{
desniMotor.run (FORWARD);
desniMotor.setSpeed (velocity);
lijeviMotor.run (BACKWARD);
lijeviMotor.setSpeed (velocity);
}
else if (det == 'R') //if incoming data is a R, move wheels right
{
desniMotor.run (BACKWARD);
desniMotor.setSpeed (velocity);
lijeviMotor.run (FORWARD);
lijeviMotor.setSpeed (velocity);
}
else if (det == 'I') //if incoming data is a I, turn right forward
{
desniMotor.run (FORWARD);
desniMotor.setSpeed (velocity);
lijeviMotor.run (FORWARD);
lijeviMotor.setSpeed (velocity);
}
else if (det == 'J') //if incoming data is a J, turn right back
{
desniMotor.run (BACKWARD);
desniMotor.setSpeed (velocity);
lijeviMotor.run (BACKWARD);
lijeviMotor.setSpeed (velocity);
}
else if (det == 'G') //if incoming data is a G, turn left forward
{
desniMotor.run (FORWARD);
desniMotor.setSpeed (velocity);
lijeviMotor.run (FORWARD);
lijeviMotor.setSpeed (velocity);
}
else if (det == 'H') //if incoming data is a H, turn left back
{
desniMotor.run (BACKWARD);
desniMotor.setSpeed (velocity);
lijeviMotor.run (BACKWARD);
lijeviMotor.setSpeed (velocity);
}
else if (det == 'S') //if incoming data is a S, stop
{
desniMotor.run (RELEASE);
lijeviMotor.run (RELEASE);
}
}
step 2: replace the motorcalls with one parameterized functionvoid loop()
{
det = check();
if (det == 'F') //if incoming data is a F, move foward
{
action(FORWARD, velocity, FORWARD, velocity);
}
else if (det == 'B') //if incoming data is a B, move back
{
action(BACKWARD, velocity, BACKWARD, velocity);
}
else if (det == 'L') //if incoming data is a L, move wheels left
{
action(FORWARD, velocity, BACKWARD, velocity);
}
else if (det == 'R') //if incoming data is a R, move wheels right
{
action(BACKWARD, velocity, FORWARD, velocity);
}
else if (det == 'I') //if incoming data is a I, turn right forward
{
action(FORWARD, velocity, FORWARD, velocity);
}
else if (det == 'J') //if incoming data is a J, turn right back
{
action(BACKWARD, velocity, BACKWARD, velocity);
}
else if (det == 'G') //if incoming data is a G, turn left forward
{
action(BACKWARD, velocity, BACKWARD, velocity);
}
else if (det == 'H') //if incoming data is a H, turn left back
{
action(BACKWARD, velocity, BACKWARD, velocity);
}
else if (det == 'S') //if incoming data is a S, stop
{
action(RELEASE, 0, RELEASE, 0);
}
}
void action( int directionRight, int speedRight, int directionLeft, int speedLeft )
{
desniMotor.run (directionRight);
desniMotor.setSpeed (speedRight);
lijeviMotor.run (directionLeft);
lijeviMotor.setSpeed (speedLeft );
}
Note not all calls correctly Step 3: remove unneeded comments and bracesvoid loop()
{
det = check();
if (det == 'F') action(FORWARD, velocity, FORWARD, velocity);
else if (det == 'B') action(BACKWARD, velocity, BACKWARD, velocity);
else if (det == 'L') action(FORWARD, velocity, BACKWARD, velocity);
else if (det == 'R') action(BACKWARD, velocity, FORWARD, velocity);
else if (det == 'I') action(FORWARD, velocity, FORWARD, velocity);
else if (det == 'J') action(BACKWARD, velocity, BACKWARD, velocity);
else if (det == 'G') action(FORWARD, velocity, BACKWARD, velocity);
else if (det == 'H') action(BACKWARD, velocity, FORWARD, velocity);
else if (det == 'S') action(RELEASE, 0, RELEASE, 0);
}- you could align the code visually to get nice columns of params (easier to check) - you could use a "switch case" here instead of the "if else ladder" - As the parameter velocity is always equal you can refactor one away (but if you want diff speeds -> don't) - ... my 2 cents
can you tell me how would i declare action in the scope?