Как заставить мой Arduino прекратить посылать перемешанные Unicode вместо цифр? - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь собрать данные из простой схемы мультиметра, но вместо того, чтобы возвращать числа, мой последовательный порт просто выводит случайные символы Юникода.

Вот мой код:

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) ޏ⸮ к⸮ׇ⸮ i⸮⸮m⸮⸮: ⸮⸮⸮⸮ | ⸮⸮ ?? ⸮⸮⸮⸮3⸮⸮⸮⸮⸮⸮⸮⸮⸮ ^ ⸮⸮ ڏ⸮⸮⸮⸮ l⸮ ⸮⸮⸮⸮⸮H⸮ ~ ⸮> ⸮⸮z⸮⸮⸮⸮⸮OwM; ⸮⸮l⸮ ⸮ ⸮sr⸮S⸮⸮} ⸮⸮⸮⸮ ׂ ٶ⸮⸮ ~ ⸮ {⸮⸮] ⸮⸮⸮⸮⸮⸮⸮⸮i⸮⸮⸮⸮⸮ [⸮⸮⸮⸮⸮Nz⸮⸮⸮⸮⸮k⸮⸮⸮⸮⸮g⸮k⸮⸮⸮i3ɵ⸮⸮ ~ ⸮⸮⸮⸮⸮] ⸮2ϪW ކ⸮ я> ⸮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⸮⸮ ݫ⸮⸮⸮ резюме ~ ⸮⸮⸮W⸮ </p> 1016 *

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018
Serial.println("A" + anasensorVal);

Это нужно сделать в две строки.Вы добавляете значение датчика к значению указателя и отправляете любой мусор, на который указывает мусор, в ячейку памяти, которая суммируется с.И это определенно не то, что вы хотите.Это не Java.Вы не можете просто добавить строки с таким знаком +.

0 голосов
/ 02 октября 2018

С

Serial.println("A" + anasensorVal);

на самом деле вы печатаете не число, а строку из некоторого места в памяти, начиная с адреса «A» + значение «anasensorVal», и, таким образом, вы получите некоторый мусор,

Вы пытаетесь добавить целое число к указателю на символ (и, вероятно, переместитесь за конец строки «A»), это не то, что вам нужно.

Обычный способ форматированиявывод для arduino:

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

В качестве альтернативы, вы можете определить оператор потока для объекта Serial, см. https://playground.arduino.cc/Main/StreamingOutput, как это сделать, а затем отформатировать вывод следующим образом:

Serial << "A" << anasensorVal;
0 голосов
/ 28 сентября 2018

Добавление типа int и типа символа в Serial.print портит формат данных, которые вы пытаетесь распечатать на монитор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...