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 - Fatal编程技术网

Arduino串行通信无法读取整数

Arduino串行通信无法读取整数,arduino,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

我使用以下代码从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;
}

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

试试这个:

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

您的代码看起来应该可以工作,但问题可能出在您发送的数据中

Serial.parseInt需要表示数字的ascii字符。您发送的是编码为字符字符串的数字吗?请注意,Serial.write99将发送一个值为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);
  }
}

你向Arduino发送了什么数据?数字的范围是什么?都是1-99之间的整数