Arduino串行通信无法读取整数

时间:2014-12-12 14:18:45

标签: arduino

我使用以下代码从Arduino(Arduino-Mega 2560)串行通信中读取整数序列 但它给了我垃圾(或错误的价值),请帮我找出错误...

int time=0,i;
void setup() {
  pinMode(6,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  i=0;
  while(Serial.available()>0) {
    time=Serial.parseInt();
  }
  for(i=1;i<=time;i++){
    digitalWrite(6,1);
    delay(150);
    digitalWrite(6,0);
    delay(100);
  }
  time=0;
}

2 个答案:

答案 0 :(得分:0)

你的代码错了。或者至少逻辑是错误的。

试试这个:

void loop(){
  if(Serial.available()) {
     time=Serial.parseInt();

     for(i=1;i<=time;i++){
        digitalWrite(6,1);
        delay(150);
        digitalWrite(6,0);
        delay(100);
     }
     time=0;
  }
}

答案 1 :(得分:0)

您的代码看起来应该可以正常工作,但问题可能在于您发送的数据。

Serial.parseInt()期望代表数字的ascii字符。你发送一个编码为字符串的数字吗?请注意,Serial.write(99)将发送一个值为99的单字节。

由于数字在0到99的范围内,因此它们将适合单个字节。为什么不直接发送一个字节并读取另一端的字节?

void setup() {
  pinMode(6,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  int time=0;
  if(Serial.available()>0) { // using while will read all the bytes and use the last one
    time = Serial.read();
  }
  for(int i=1; i<=time; i++){
    digitalWrite(6,1);
    delay(150);
    digitalWrite(6,0);
    delay(100);
  }
}