Несколько графиков на последовательном плоттере
Я пытаюсь запустить код 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);
}
@rad, 👍0
Обсуждение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);
}
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Вставьте код в формате, который мы можем скопировать и протестировать. А также вставлять изображения, а не связывать их. Когда-нибудь они будут удалены из своего текущего местоположения, и этот вопрос будет бесполезен для других людей, имеющих такие же проблемы, как и у вас., @Filip Franik