请求可以帮忙看看这段代码为什么跟设想的不一样-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1612|回复: 3

[未解决] 请求可以帮忙看看这段代码为什么跟设想的不一样

[复制链接]
发表于 2020-12-24 14:21 | 显示全部楼层 |阅读模式
我是新手,刚入门,还在学习敲代码,但是在学习的过程这段代码完全不明白
为什么代码输出跟设想的不一样?
我可以付费给师傅给我解释这个问题的····
以下是代码:
*/
int bbb;
void setup() {

Serial.begin(9600);
pinMode(13,OUTPUT);


}

void loop() {
    if(Serial.available()>0)
    {  
    char bbk=Serial.read();
      if(bbk>='0' && bbk<='9')

    {
      bbb=bbk-'0';
    Serial.println(bbk);
    }
      else
    {
    Serial.println("no ok");
    }
    if(bbb>0)
    {
    //bbb--;
    digitalWrite(13,HIGH);
    delay(500);
    digitalWrite(13,LOW);
    delay(500);
    Serial.println(bbb);
    }


    }



}

 楼主| 发表于 2020-12-24 14:23 | 显示全部楼层
理论上是监视串口的输入,然后给出小灯的闪烁次数的···但是这段代码给出的结果(比如输入9)得出的结果是:
9
9
no ok
9
发表于 2020-12-25 10:24 | 显示全部楼层
本帖最后由 烂先生 于 2020-12-25 10:28 编辑

我试了一下,首先,代码本身没有语法错误,至于为什么没有出现你预想的结果,是因为你串口监视器设置的问题 QQ截图20201225102734.jpg
意思是你通过串口发送消息的时候后面要不要带特定的字符——没有或者换行或者回车或者两者都要,比如你输入9,实际上发送的是'9''NL''CR',这是三个字符,而Serial.read()这个函数每次只能从串口读取一个字节,所以你这个“9”会被分三次读取,也就会进行三次判断,如下图所示:
下载.png


你可以分别设置四种不同的结束符,看看有什么区别就明白了
另外这个程序也不能实现你说的能给出灯的闪烁次数,这里灯闪几次只能说明它进行了几次判断而已。


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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 16:45 , Processed in 0.105166 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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