如何制作arduino串行循环(连续接收数字)
How to make an arduino serial loop (receive numbers continuously)
编码新手!我正在尝试通过从处理中发送的串行数据在我的 LED 矩阵上获取文本。
我的代码有效,但唯一的问题是,虽然处理的串行数据是恒定的,但 arduino 代码只读取一次数字。这使得文本不会一直滚动。如何在 arduino 上循环串行读取?
这是我的代码的相关部分:
void loop()
{
if (Serial.available() > 0)
{
int matrixPinState = Serial.read();
// stage = Serial.read();
// analogWrite(matrixPin, stage);
if (matrixPinState == 1)
{
matrix.fillScreen(0);
matrix.setCursor(x, 0);
matrix.print(F("Im kind"));
if (--x < -30)
{
x = matrix.width();
if (++pass >= 8) pass = 0;
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(30);
}
}
}
当一个字节(或者你称之为字符,一个8位长的数据)被uart块(硬件)获取时,它被缓冲到输入缓冲区,以便程序员可以读取和处理它。
在你的例子中,当你发送一个字符时,它被提取并放入缓冲区,当你读取它时,除非你发送到新的,否则没有更多的字节可供读取。
简而言之,读取引脚状态一次。你可以这样做:
int matrixPinState = 0
void setup() {
// do all your setup settings first
while (Serial.available() < 0) {
// wait here for the input
delay(30);
}
// got your input, read it
matrixPinState = Serial.read();
}
void loop()
{
if (matrixPinState == 1)
{
matrix.fillScreen(0);
matrix.setCursor(x, 0);
matrix.print(F("Im kind"));
if (--x < -30)
{
x = matrix.width();
if (++pass >= 8) pass = 0;
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(30);
}
}
编码新手!我正在尝试通过从处理中发送的串行数据在我的 LED 矩阵上获取文本。
我的代码有效,但唯一的问题是,虽然处理的串行数据是恒定的,但 arduino 代码只读取一次数字。这使得文本不会一直滚动。如何在 arduino 上循环串行读取?
这是我的代码的相关部分:
void loop()
{
if (Serial.available() > 0)
{
int matrixPinState = Serial.read();
// stage = Serial.read();
// analogWrite(matrixPin, stage);
if (matrixPinState == 1)
{
matrix.fillScreen(0);
matrix.setCursor(x, 0);
matrix.print(F("Im kind"));
if (--x < -30)
{
x = matrix.width();
if (++pass >= 8) pass = 0;
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(30);
}
}
}
当一个字节(或者你称之为字符,一个8位长的数据)被uart块(硬件)获取时,它被缓冲到输入缓冲区,以便程序员可以读取和处理它。
在你的例子中,当你发送一个字符时,它被提取并放入缓冲区,当你读取它时,除非你发送到新的,否则没有更多的字节可供读取。
简而言之,读取引脚状态一次。你可以这样做:
int matrixPinState = 0
void setup() {
// do all your setup settings first
while (Serial.available() < 0) {
// wait here for the input
delay(30);
}
// got your input, read it
matrixPinState = Serial.read();
}
void loop()
{
if (matrixPinState == 1)
{
matrix.fillScreen(0);
matrix.setCursor(x, 0);
matrix.print(F("Im kind"));
if (--x < -30)
{
x = matrix.width();
if (++pass >= 8) pass = 0;
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(30);
}
}