angel725 发表于 2013-7-17 16:08:29

简单的累加,哪里错了?

本帖最后由 angel725 于 2013-7-18 14:35 编辑

void loop(){
int a=0;
int b=Serial.read();
//if(b!=0){
    for(int i=0;i<=b;i++){
      a+=i;
      Serial.println(a);
      delay(1000);
    }
//}
}

串口读数值,下面for计算

比如打个10,for就计算从1累加到10的和。

可是不管我输入几,计算的结果都是1000多。
不知道哪错了。。。

疯子。 发表于 2013-7-17 16:59:08

。。。

你贴代码贴一半,别人想帮你调试还得自己补齐剩余部分

angel725 发表于 2013-7-17 18:26:02

已经全了,
还有一段就是setup()了,
里面就一句:Serial.begin(9600);

疯子。 发表于 2013-7-17 19:36:48

void loop(){
int a=0;
int b=Serial.read();

if(b!=0){
Serial.println(b);
    for(int i=0;i<=b;i++){
      a+=i;
      //Serial.println(a);
      delay(1000);
    }
}
}

这样试了一下,每一次读出来的数据有三组,不是我们输入的数据

yyy_zc 发表于 2013-7-17 21:39:47

Serial.read() 读出来的不是直接是整形数 要自己处理一下。如 b = Serial.read() -'0' 才是要的数据
输入 ‘9’此时 b='9'-'0'才是 9否则是40+(ASSCII表查一下)

angel725 发表于 2013-7-17 23:45:20

本帖最后由 angel725 于 2013-7-17 23:54 编辑

yyy_zc 发表于 2013-7-17 21:39 static/image/common/back.gif
Serial.read() 读出来的不是直接是整形数 要自己处理一下。如 b = Serial.read() -'0' 才是要的数据
输入...

谢谢,可以是可以,

不过,只能1-9,
输入10以上的数,会被分开两行,
比如12,就是1和2各一行。

pipihua 发表于 2013-7-18 13:48:45

用Serial.parseInt()来读取串口数据,可以直接得到整数值

angel725 发表于 2013-7-18 14:28:10

pipihua 发表于 2013-7-18 13:48 static/image/common/back.gif
用Serial.parseInt()来读取串口数据,可以直接得到整数值

这个方法简单。。
页: [1]
查看完整版本: 简单的累加,哪里错了?