嗨,所以我在编写代码时遇到问题,因为我一直收到错误报告,说明在这个范围内没有声明,我不太确定问题是什么,但它正在推动我的问题。任何帮助将不胜感激我将包括下面的代码,如果可能的话,问题的图像及其影响的行。
// 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(det = check)
while(1){
if(blueToothSerial.available()){//check if there's any data sent from the remote bluetooth shield
(det = check) = blueToothSerial.read();
Serial.print(det = check);
}
if(Serial.available()){//check if there's any data sent from the local serial terminal, you can add the other applications here
(det = check) = Serial.read();
blueToothSerial.print(det = check);
}
}
}
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();
}
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 pinlights = 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.
{
// 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(pinlights, OUTPUT);
}
{
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();
}
}
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;
}
答案 0 :(得分:1)
你有这一行:
char(det = check)
有明显的问题,即不能正确调用函数或变量声明。&#39;
在稍后引用它之后,您还可以在代码中将det
定义为全局变量
char det; //Used in the loop function, stores the character received from the phone.
所以有三个问题:
det
声明(loop()
loop()
函数中的局部变量(除非您打算在此情况下删除全局声明)det = check();
Arduino IDE是原始的,但它确实提供了有意义的错误消息和行号,指示错误发生的位置。对于复杂的错误而言并不总是准确的,但这是一个不容忽视的神起点。