为什么我的 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;
。
我的 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;
。