Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
arduino无需打印到串行_Arduino_Arduino Ide - Fatal编程技术网

arduino无需打印到串行

arduino无需打印到串行,arduino,arduino-ide,Arduino,Arduino Ide,我已经建立了一个arduino草图,试图对来自两个传感器的模拟值进行两个不同长度的窗口和一些简单的计算(均值/方差)。以前,我为1个传感器编写了与预期相同的代码,但下面的代码已扩展为一系列小for循环,因此现在所有内容都应该为两个传感器运行 我根本无法将任何东西打印到串行文件中——即使是为了调试而在setup和start of loop中输入的两个串行文件——但是代码编译和上传时没有任何错误或警告 我很抱歉把整个草图都包括在内,我想不出如何把它拆开展示 long int currentTime

我已经建立了一个arduino草图,试图对来自两个传感器的模拟值进行两个不同长度的窗口和一些简单的计算(均值/方差)。以前,我为1个传感器编写了与预期相同的代码,但下面的代码已扩展为一系列小for循环,因此现在所有内容都应该为两个传感器运行

我根本无法将任何东西打印到串行文件中——即使是为了调试而在setup和start of loop中输入的两个串行文件——但是代码编译和上传时没有任何错误或警告

我很抱歉把整个草图都包括在内,我想不出如何把它拆开展示

long int currentTime = 0;
long int stopTime[2] = {0,0};
long int shortWindowTime = 0;
int shortVal[2][40];
int reflexWindowStart = 0;
int reflexWindowTime = 0;
int reflexVal[2][500];
int mean[2] = {0,0};
unsigned int variance[2] = {0,0};
int lowVal[2] = {0,0};
int peakVal[2] = {0,0};
int lowIndex[2] = {0,0};
int peakIndex[2] = {0,0};
int stopIndex[2] = {0,0};
boolean stopped[2] = {false,false};

void setup(){
  Serial.begin(9600);
  Serial.println("wtf?");
  for(int i=0;i<2;i++){
    for(int j=0;j<40;j++){
      shortVal[i][j] = 0;
    }
    for(int j=0;j<500;j++){
      reflexVal[i][j] = 1023;
    }
  }

}

void loop() {

  Serial.println("wtf?");

  currentTime = micros();

  if(currentTime - shortWindowTime > 500){

    shortWindowTime = currentTime;

    writeShortWindow();

    meanVariance();

    if(reflexWindowStart == 0){
      reflexWindow();
    }
    reflexWindowStart++;
    if(reflexWindowStart > 9){
      reflexWindowStart = 0;
    } 
  }
} 

void writeShortWindow(){
  for(int i=0;i<2;i++){
    for(int j=39; j>0; j--){
      shortVal[i][j] = shortVal[i][j-1];
    }
    int ground = analogRead(A5);
    shortVal[0][0] = analogRead(A1);
    analogRead(A5);
    shortVal[i][0] = analogRead(A2);
  }
}

void meanVariance(){
  for(int i=0;i<2;i++){
    for(int j=0; j<39; j++){
      mean[i] = mean[i] + shortVal[i][j];
    }    
    mean[i] = mean[i] / 40;
    for(int j=0; j<39; j++){
      variance[i] = variance[i] + sq(mean[i] - shortVal[i][j]) ;
    }
    variance[i] = variance[i] / 40;
  }
}


void reflexWindow(){

    for(int i=0;i<2;i++){
      if(stopped[i] == true){
        if((millis() - stopTime[i] > 20) && (peakVal[i] - shortVal[i][0] > 20) && (variance[i] <= 1)){ 
          stopped[i] = false;
          stopIndex[i] = 0;
          Serial.println("................................NOTstopped");
        }
      }
    }

    for(int i=0;i<2;i++){
    if(stopped[i] == false){

      lowVal[i] = 1023;
      peakVal[i] = 0; 

      for(int j=stopIndex[i]; j>0; j--){
        reflexVal[i][j] = reflexVal[i][j-1];
          if(reflexVal[i][j] < lowVal[i]){
            lowVal[i] = reflexVal[i][j];
            lowIndex[i] = j;
          }
      }

      reflexVal[i][0] = shortVal[i][0];



      for(int j=lowIndex[i]; j>=0; j--){
        if(reflexVal[i][j] > peakVal[i]){
          peakVal[i] = reflexVal[i][j];
        }
      }
    }
  }


  for(int i=0;i<2;i++){
    if(stopped[i] == false){
      if(peakVal[i] - lowVal[i] >= 50){
        Serial.print(i);
        Serial.println("...................................stopped");
        stopTime[i] = millis();
        stopped[i] = true;
      }
    }
  }

  for(int i=0;i<2;i++){
    if(stopIndex[i] < 499){
      stopIndex[i]++;
    }
  }

  Serial.print(shortVal[0][0]);
  Serial.print(" ... ");
  Serial.print(lowVal[0]);
  Serial.print(" ... ");
  Serial.print(peakVal[0]); 
  Serial.print(" ........ ");
  Serial.print(shortVal[1][0]);
  Serial.print(" ... ");
  Serial.print(lowVal[1]);
  Serial.print(" ... ");
  Serial.println(peakVal[1]);   
}
long int currentTime=0;
长int停止时间[2]={0,0};
long int shortWindowTime=0;
int shortVal[2][40];
int reflexWindowStart=0;
int时间=0;
int reflexVal[2][500];
int-mean[2]={0,0};
无符号整数方差[2]={0,0};
int lowVal[2]={0,0};
int peakVal[2]={0,0};
int lowIndex[2]={0,0};
int-peakIndex[2]={0,0};
int stopIndex[2]={0,0};
布尔停止[2]={false,false};
无效设置(){
Serial.begin(9600);
Serial.println(“wtf”);

对于(int i=0;i如果您有一块莱昂纳多板,您很可能在设置功能中看不到Serial.print。
尝试将设置更改为该设置(注意等待序列号的额外while循环)

void setup(){
Serial.begin(9600);
而(!串行);
Serial.println(“wtf”);

对于(int i=0;i您是否检查了串行监视器中的波特率,因为如果波特率不同,则不会显示任何内容。
确保串行监视器和
serial.begin()
中的一个相同

您是否尝试重置Arduino?我似乎记得我有类似的问题…串行控制台有时会断开连接,但它不会警告您…尝试将您的程序重新上载到主板,保持电缆连接。(我想你是用USB连接的?)我想这就是我用我的。我已经尝试过多次通过USB上传,当我运行任何其他我知道已经运行的草图时,它打印出来并运行得很好。干杯,虽然只是一种预感,但你可以尝试移动(其中一些)你的代码不在安装程序中?我不是专家,但我有一种预感,安装程序就是这样,它只能初始化内存中的数据。如果你把串行读写放在循环()中,会有什么不同吗?我在想,安装程序中从r/w到串行会导致问题。不过,这可能是胡说八道。(我认为我们在uni的fpga上遇到了问题,这种事情就是解决办法)谢谢你的建议,但我实际上是在一个Uno上,无论如何,这仍然不能解释为什么循环开始时的串行打印没有运行。然后我猜你正在耗尽内存,这导致调试错误非常困难,因为编译中没有显示错误。试着将字节数相加,顶部的所有变量都是使用并查看是否是这种情况。在这里可以找到更多关于内存的信息。我快速查看了一下,这一行“int reflecval[2][500];”将向SRAM添加2000字节,其中Arduino Uno总共有2048个字节。因此,我确信您的一些问题与内存有关。
void setup(){
  Serial.begin(9600);
  while (!Serial);
  Serial.println("wtf?");
  for(int i=0;i<2;i++){
    for(int j=0;j<40;j++){
      shortVal[i][j] = 0;
    }
    for(int j=0;j<500;j++){
      reflexVal[i][j] = 1023;
    }
  }
}