我如何让Arduino停止发送混乱的Unicode而不是数字?

时间:2018-09-28 20:22:37

标签: c++ arduino

我正试图从一个简单的万用表电路中收集数据,但是我的串行端口没有返回数字,而是输出随机的Unicode符号。

这是我的代码:

void setup() {
    pinMode(2, INPUT);
    Serial.begin(1200);
    int prevVal = 0;
    int timeVar = 0;
}
void loop() {
    int digisensorVal = digitalRead(2);
    int anasensorVal = analogRead(2) * 100;
    Serial.print("D" + digisensorVal);
    Serial.print(",");
    Serial.println("A" + anasensorVal);
    delay(250);
}

这是输出示例:

  

⸮L/⸮U⸮⸮⸮⸮⸮?⸮⸮⸮w⸮e⸮⸮⸮⸮1⸮⸮⸮⸮}⸮J⸮⸮⸮⸮⸮oޝ⸮Y⸮⸮⸮|s⸮⸮}⸮⸮ ⸮⸮⸮⸮⸮є6x⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮y[⸮⸮⸮⸮⸮?⸮v⸮=⸮⸮⸮-⸮^⸮Y_z⸮⸮d⸮⸮⸮%ܿjV⸮〜O⸮⸮ G⸮⸮⸮⸮e⸮⸮U⸮⸮〜+0⸮⸮⸮hh⸮s⸮   ⸮c⸮⸮⸮+⸮⸮io3:⸮5kλϣ   ,⸮g⸮⸮⸮⸮⸮>⸮⸮   ⸮yꨛ⸮v⸮N⸮⸮⸮=⸮⸮=⸮⸮⸮l⸮⸮g⸮g⸮⸮⸮⸮⸮s⸮U⸮⸮⸮⸮⸮⸮=⸮ܳt⸮⸮⸮}⸮⸮'⸮˾⸮k ⸮⸮⸮⸮⸮⸮⸮{⸮ᦒ⸮⸮⸮⸮ϓ߿gVp⸮⸮⸮⸮Y⸮⸮O⸮/F⸮〜⸮⸮⸮⸮q4⸮⸮_f⸮⸮⸮⸮⸮I|P⸮⸮⸮NE ⸮〜u⸮7⸮⸮⸮⸮g⸮⸮G〜⸮⸮⸮⸮__ @⸮⸮⸮⸮⸮⸮⸮C⸮⸮⸮k⸮T⸮o/⸮t^⸮〜⸮{}⸮w⸮⸮⸮ ⸮'h=⸮ϸ〜⸮⸮⸮⸮⸮⸮⸮?⸮s⸮s⸮l⸮o5​​⸮^⸮⸮⸮w9{]⸮⸮q〜⸮⸮⸮,⸮⸮⸮c ⸮2_⸮⸮⸮⸮o6k)ޏ⸮k⸮ׇ⸮i⸮⸮m⸮⸮:⸮⸮⸮⸮|⸮⸮??⸮⸮⸮⸮3⸮⸮⸮⸮⸮⸮⸮⸮⸮^⸮⸮ڏ⸮⸮ ⸮⸮l⸮⸮⸮⸮⸮⸮H⸮〜⸮>⸮⸮z⸮⸮⸮⸮⸮OwM;⸮⸮l⸮⸮   ⸮sr⸮S⸮⸮}⸮⸮⸮⸮ׂٶ⸮⸮〜⸮{⸮⸮]⸮⸮⸮⸮⸮⸮⸮⸮i⸮⸮⸮⸮⸮[⸮⸮⸮⸮⸮Nz⸮⸮⸮⸮⸮k⸮⸮⸮ ⸮⸮g⸮k⸮⸮⸮i3ɵ⸮⸮〜⸮⸮⸮⸮⸮]⸮2ϪWކ⸮i>⸮gu⸮⸮ӵ⸮?⸮̥⸮⸮m⸮⸮|⸮⸮⸮⸮Wɓ⸮⸮⸮[⸮⸮O㠑_⸮⸮⸮⸮⸮⸮⸮⸮⸮/⸮M⸮⸮_⸮⸮gwF⥷⸮⸮yn⸮P⸮⸮-⸮⸮⸮N⸮⸮⸮=⸮⸮⸮⸮⸮⸮⸮>J⸮ }⸮⸮&⸮⸮⸮C⸮HG翎⸮/⸮⸮⸮⸮}⸮⸮⸮^⸮⸮,⸮)[⸮⸮⸮⸮⸮⸮У⸮⸮}⸮ޯ⸮⸮⸮⸮7⸮ ⸮⸮⸮ó⸮U:〜⸮⸮ns⸮⸮z⸮⸮n⸮⸮G|޿ӳ꓊⸮⸮}⸮⸮L⸮〜⸮⸮KI⸮⸮G⸮⸮⸮⸮⸮⸮ӏ⸮⸮⸮⸮u 6⸮W⸮⸮⸮⸮Ӊ۾⸮⸮9⸮zVΆ럿⸮⸮⸮ۘ⸮⸮T⸮<⸮⸮⸮⸮⸮⸮⸮/⸮⸮⸮⸮xG〜⸮V⸮⸮u+N⸮⸮ݫ⸮ ⸮⸮cv〜⸮⸮⸮W⸮

3 个答案:

答案 0 :(得分:1)

Serial.println("A" + anasensorVal);

这需要分两行完成。您将传感器值添加到指针值,并在累加的内存位置发送任何指向的垃圾。它绝对不是您想要的。这不是Java。您不能只添加带有+的字符串。

答案 1 :(得分:1)

使用

Serial.println("A" + anasensorVal);

您实际上并不是在打印数字,而是从内存中某个位置开始的字符串,其起始地址为“ A” +“ anasensorVal”的值,因此您将得到一些垃圾信息。

您正在尝试向char的指针添加整数(并且可能会超出字符串“ A”的末尾),这不是您想要的。

在arduino上格式化输出的常用方法:

Serial.print("A");
Serial.println(anasensorVal);

或者,您可以为Serial对象定义一个流运算符,请参见https://playground.arduino.cc/Main/StreamingOutput,然后再像这样格式化输出:

Serial << "A" << anasensorVal;

答案 2 :(得分:0)

Serial.print中添加一个int类型和字符类型会弄乱您要打印到监视器的数据格式。