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

时间:2017-11-19 18:08:29

标签: arduino serial-port arduino-uno

我的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

那为什么不向我发送相同的号码?

1 个答案:

答案 0 :(得分:8)

在你的程序中,输出是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;