Несколько графиков на последовательном плоттере

Я пытаюсь запустить код Arduino, который одновременно: 1) мигает светодиодом каждые 3 секунды 2) получает входное напряжение от датчика ЭМГ и соответствующим образом позиционирует серводвигатель

Пока я запускаю эту программу, я хочу изобразить на том же графике следующее: 1) Статус светодиода вкл/выкл печатается как 600, если включен, и 0, если выключен 2) Значение EMG подается на Arduino 3) Угол, который Arduino отправляет на серводвигатель

Я написал следующий код, который работает до некоторой степени, но проблема, с которой я столкнулся, заключается в том, что я получаю только два графика на плоттере вместо трех, я думаю, что значение ЭМГ и угол объединены в одну линию, как видно на этой картинке:

Однако, если я удалю оператор печати угла, я получу правильный график для двух других, как это:

Как мне изменить свой код, чтобы я мог рисовать все три по отдельности? Заранее спасибо.

#include <Servo.h>
Servo myservo;
const int ledPin =  LED_BUILTIN;
int ledState = LOW;
unsigned long previousMillis = 0;
const long interval = 3000;
int led=0;
int servovalue=0; 
void setup() {
  Serial.begin(9600);
  myservo.attach(9);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int sensorValue = analogRead(A0);    
int angle = map(sensorValue, 0, 1023, 0, 180);
myservo.write(angle);
Serial.print(sensorValue);
Serial.print(“ ”)
Serial.println(angle);
delay(15);
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    if (ledState == LOW) {
      ledState = HIGH;
      led = 600;
    } else {
      ledState = LOW;
      led = 0;
    }
    digitalWrite(ledPin, ledState);
  }
  Serial.print(" ");
    Serial.println(led);
}

, 👍0

Обсуждение

Вставьте код в формате, который мы можем скопировать и протестировать. А также вставлять изображения, а не связывать их. Когда-нибудь они будут удалены из своего текущего местоположения, и этот вопрос будет бесполезен для других людей, имеющих такие же проблемы, как и у вас., @Filip Franik


1 ответ


1

Часть вашего кода, выводящая данные в серийный номер, выглядит так:

void loop() {
    (...)
    Serial.print(sensorValue);
    Serial.print(“ ”)
    Serial.println(angle);
    (...)
    Serial.print(" ");
    Serial.println(led);
}

Ошибка находится в строке Serial.println(angle);. Метод println вставляет в конец символ "новой строки". Попробуйте изменить его на Serial.print(angle);, чтобы был только один символ "новой строки".

void loop() {
    (...)
    Serial.print(sensorValue);
    Serial.print(“ ”)
    Serial.print(angle);
    (...)
    Serial.print(" ");
    Serial.println(led);
}
,