极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10109|回复: 7

简单的累加,哪里错了?

[复制链接]
发表于 2013-7-17 16:08:29 | 显示全部楼层 |阅读模式
本帖最后由 angel725 于 2013-7-18 14:35 编辑
  1. void loop(){
  2.   int a=0;
  3.   int b=Serial.read();
  4. //  if(b!=0){
  5.     for(int i=0;i<=b;i++){
  6.       a+=i;
  7.       Serial.println(a);
  8.       delay(1000);
  9.     }
  10. //  }
  11. }
复制代码


串口读数值,下面for计算

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

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

使用道具 举报

发表于 2013-7-17 16:59:08 | 显示全部楼层
。。。

你贴代码贴一半,别人想帮你调试还得自己补齐剩余部分
回复 支持 反对

使用道具 举报

 楼主| 发表于 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);
    }
}
}

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

使用道具 举报

发表于 2013-7-17 21:39:47 | 显示全部楼层
Serial.read() 读出来的不是直接是整形数 要自己处理一下。如 b = Serial.read() -'0' 才是要的数据
输入 ‘9’  此时 b='9'-'0'  才是 9  否则是40+(ASSCII表查一下)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-17 23:45:20 | 显示全部楼层
本帖最后由 angel725 于 2013-7-17 23:54 编辑
yyy_zc 发表于 2013-7-17 21:39
Serial.read() 读出来的不是直接是整形数 要自己处理一下。如 b = Serial.read() -'0' 才是要的数据
输入  ...


谢谢,可以是可以,

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

使用道具 举报

发表于 2013-7-18 13:48:45 | 显示全部楼层
用Serial.parseInt()来读取串口数据,可以直接得到整数值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-18 14:28:10 | 显示全部楼层
pipihua 发表于 2013-7-18 13:48
用Serial.parseInt()来读取串口数据,可以直接得到整数值

这个方法简单。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-6-4 00:23 , Processed in 0.046319 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表