将Serial.read()转换为可用的整数

时间:2017-08-24 13:38:27

标签: arduino integer

当我发送号码" 5"通过串口监视器到Arduino然后Serial.read()将输出" 53"因为53是" 5"的ASCII值。

我需要做的是转换" 53" (或Serial.read()给出的任何其他数字)到正常整数,所以当我发送" 5"到了Arduino然后Arduino将把它视为" 5"不是" 53"。

此外我无法使用Serial.parseInt(),因为它有1秒延迟,但我需要立即收到该号码。

1 个答案:

答案 0 :(得分:0)

parseInt()的延迟可能是由于您的串行超时。

如果您可以立即发送非数字字符,

parseInt() 可能 仍然适用于您,如Arduino网站上this discussion中所述。

或者,您可以从根本上缩短超时时间,如下所述:

  迈克尔马戈利斯' " Arduino Cookbook" (第113页,第113页)救援!

     

事实证明,Serial类(扩展Stream类)使用Stream.setTimeout()函数。超时的默认值为1000(一秒)。我只是将它设置为更小的东西,比如50毫秒,草图很漂亮而且活泼。这是完整的示例草图。关闭串行监视器中的行结束...