我的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
那为什么不向我发送相同的号码?
答案 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;
。