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

Arduino 将Serial.read()转换为可用的整数,arduino,integer,Arduino,Integer,当我通过串行监视器将数字“5”发送到Arduino时,serial.read()将输出“53”,因为53是“5”的ASCII值 我需要做的是将“53”(或Serial.read()给出的任何其他数字)转换为一个普通整数,这样当我将“5”发送给Arduino时,Arduino会将其视为“5”而不是“53” 另外,我不能使用Serial.parseInt(),因为它有1秒的延迟,但我需要立即接收数字。parseInt()中的延迟可能是由于您的串行超时 parseInt()如果您可以在之后立即发送一个

当我通过串行监视器将数字“5”发送到Arduino时,
serial.read()
将输出“53”,因为53是“5”的ASCII值

我需要做的是将“53”(或
Serial.read()
给出的任何其他数字)转换为一个普通整数,这样当我将“5”发送给Arduino时,Arduino会将其视为“5”而不是“53”


另外,我不能使用
Serial.parseInt()
,因为它有1秒的延迟,但我需要立即接收数字。

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

parseInt()
如果您可以在之后立即发送一个非数字字符,可能仍然适用于您,如Arduino网站中所述

或者,您也可以按此处所述从根本上缩短超时时间:

迈克尔·马戈利斯的《Arduino烹饪书》(第二版,第113页)拯救人类

事实证明,Serial类(扩展Stream类)使用Stream.setTimeout()函数。超时的默认值为1000(1秒)。我只是将它设置为更小的值,比如50毫秒,草图很漂亮,很有活力。下面是完整的示例草图。关闭串行监视器中的线路端点


parseInt()
中的延迟可能是由于串行超时造成的

parseInt()
如果您可以在之后立即发送一个非数字字符,可能仍然适用于您,如Arduino网站中所述

或者,您也可以按此处所述从根本上缩短超时时间:

迈克尔·马戈利斯的《Arduino烹饪书》(第二版,第113页)拯救人类

事实证明,Serial类(扩展Stream类)使用Stream.setTimeout()函数。超时的默认值为1000(1秒)。我只是将它设置为更小的值,比如50毫秒,草图很漂亮,很有活力。下面是完整的示例草图。关闭串行监视器中的线路端点


谢谢我使用了
Serial.setTimeout(50)
,它工作得很好。谢谢。我使用了
Serial.setTimeout(50)
,它工作得非常好。