Arduino编码问题,未在此范围内声明

时间:2014-09-02 20:43:29

标签: arduino

嗨,所以我在编写代码时遇到问题,因为我一直收到错误报告,说明在这个范围内没有声明,我不太确定问题是什么,但它正在推动我的问题。任何帮助将不胜感激我将包括下面的代码,如果可能的话,问题的图像及其影响的行。

// 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;
}

1 个答案:

答案 0 :(得分:1)

你有这一行:

  char(det = check)

有明显的问题,即不能正确调用函数或变量声明。&#39;

在稍后引用它之后,您还可以在代码中将det定义为全局变量

  char det; //Used in the loop function, stores the character received from the phone.

所以有三个问题:

  1. 提前移动det声明(loop()
  2. 之前)
  3. 不要将其重新定义为loop()函数中的局部变量(除非您打算在此情况下删除全局声明)
  4. 使用正确的函数调用格式:det = check();
  5. Arduino IDE是原始的,但它确实提供了有意义的错误消息和行号,指示错误发生的位置。对于复杂的错误而言并不总是准确的,但这是一个不容忽视的神起点。