Когда байт (или вы называете его символом, данные длиной 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);
}
}