为什么我的 Arduino 串行端口给我半随机数?

Why does my Arduino serial port gives me semi-random numbers?

我的 Arduino Uno 有一个基本问题。
我的示例代码通过串行端口获取一个数字,应该将其打印回来。

int incomingByte = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("Hello World");  
}

void loop() {
  if (Serial.available() > 0) {

    // read the incoming byte:
    incomingByte = Serial.read();

    // say what you got:
    Serial.print("I received: ");
    Serial.println(incomingByte, DEC);
  }
} 

当我发送0时,我收到48。

0->48
1->49
2->50
3->51

a->97
b->98
A->65

那为什么它不把相同的号码发回给我呢?

在您的程序中,输出是 Arduino 接收到的输入的 ASCII equivalent。 ASCII 等价于 0 是 48,1 是 49,a 是 97,A 是 65 等等。

原因是您将输入存储到 incomingByte 变量 (incomingByte = Serial.read();) 但您将 incomingByte 变量声明为 int。当一个字符赋值给整型变量时,它对应的ASCII值会被存储到integer variable.

因此,如果您想打印发送给 Arduino 的字符,您需要将 int incomingByte = 0; 更改为 char incomingByte;