Arduino的串行端口只打印所有行,当我把一个Serial.println(“”)线路的环

问题描述 投票:0回答:1

我有主循环内的一些时间来控制该段接通/断开LED和从传感器存储的值到一个链表(使用该链表库:https://github.com/ivanseidel/LinkedList)。我有我的波特率设置为34800,因为我想要的数据以更快的速度进行传输,而我有一个是for循环的定时循环内捕获并打印它们的传感器数据的功能。

我现在面临的奇怪的问题是,当我Serial.print()的数据,只有当我有一个Serial.println(作品)(只是Serial.print()不工作)内部各IF块。如果我删除此Serial.println()的代码不工作,只是给出了垃圾串行监视器。

是什么原因造成这个问题?我该如何解决呢?下面是代码:

void setup( void )
{
  Serial.begin( 38400 );
  while(!Serial){
    }
  pinMode (ledPin670, OUTPUT);
  pinMode (ledPin850, OUTPUT);
  digitalWrite(ledPin670,HIGH);
  digitalWrite(ledPin850,HIGH);
  Start = millis();
  timer = micros();
}

void loop( void )
{
  if ( millis() - Start < 100 )
  {
    //Serial.read();
    Serial.println(" ");
    digitalWrite(ledPin670,LOW);
    analogRead( A0 );
    valList670.add(analogRead( A0 ));
    time670.add(micros() - timer);
    ++Count;
  }
  else if ((millis() - Start >= 100) && (millis() - Start < 110)){
    digitalWrite(ledPin670,HIGH);
    }
  else if ((millis() - Start >= 110) && (millis() - Start < 220))
  {
//    Serial.read();
    Serial.println(" ");
    digitalWrite(ledPin670,HIGH);
    digitalWrite(ledPin850,LOW);
    analogRead( A0 );
    valList950.add(analogRead( A0 ));
    time850.add(micros() - timer);
    ++Count2;
  }
  else if ((millis() - Start >= 220) && (millis() - Start < 230)){
    digitalWrite(ledPin850,HIGH);

  else
  {
    //Serial.println(millis() - Start);
    Serial.println("count:");
    Serial.println( Count );
    Serial.println( Count2 );
    Serial.println( Count3 );
    arrayLoop(valList670, time670,10);
    arrayLoop(valList850, time850,10);

    valList670.clear();
    valList850.clear();
    time850.clear();
    time670.clear();
    timer = micros();
    Count = 0;
    Count2 = 0;
    Start = millis();
}

void arrayLoop(LinkedList<int> &pinNum,LinkedList<unsigned long> &timer, int valDiff){
//  Serial.println(pinNum);
  int listSize = pinNum.size();
  for (int h = 0; h < listSize; h+=valDiff) {
      //Get value from list
      if (h <= listSize){
        int val = pinNum.get(h);
        unsigned long tim = timer.get(h);
        Serial.print(tim);
        Serial.print("\t");
        Serial.println(val);
      }
  }
}
c arduino serial-port sensor
1个回答
0
投票

只有调用Serial.print()一次。

如果定义下,你做的,不,要叫Serial.print()的情况下,我们可以帮你看到它发生这种方式。

基本上,不过,你需要计算您已经打印了多少次。只有实际调用打印如果计数为0。

© www.soinside.com 2019 - 2024. All rights reserved.