Arduino 将Serial.read()转换为可用的整数
当我通过串行监视器将数字“5”发送到Arduino时,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()如果您可以在之后立即发送一个
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)
,它工作得非常好。