В Arduino IDE есть встроенный плоттер для вывода графиков - очень удобный инструмент отладки. Для рисования графика нужно просто выводить данные в порт, соблюдая следующие условия:
- Вывод пакета данных заканчивается переносом строки -
println
- Для вывода нескольких графиков нужно разделять значения запятыми
','
или пробелами' '
Выведем синусоиду:
void setup() {
Serial.begin(115200);
}
float x;
void loop() {
x += 0.2;
Serial.println(sin(x));
delay(40);
}
Для открытия плоттера в Arduino IDE 1.x нужно нажать Инструменты / Плоттер по последовательному соединению, а в Arduino IDE 2.x есть отдельная кнопка:
Результат:
Теперь выведем две синусоиды, вторую растянем и увеличим амплитуду:
void setup() {
Serial.begin(115200);
}
float x;
void loop() {
x += 0.2;
Serial.print(sin(x));
Serial.print(','); // разделитель - запятая
Serial.println(sin(x * 0.5) * 2);
delay(40);
}
Плоттер также поддерживает вывод подписей графиков, синтаксис отличается у Arduino IDE 1.x и 2.x.
Arduino IDE 1.x #
Нужно отправить подписи отдельной строкой с переносом, разделитель - запятая, количество подписей должно соответствовать количеству наборов данных. Строку с подписями можно отправлять каждый раз непосредственно перед отправкой данных, а можно отправить однократно - программа их запомнит:
void setup() {
Serial.begin(115200);
Serial.println("sin(x),sin(x/2)*2");
}
float x;
void loop() {
x += 0.2;
// Serial.println("sin(x),sin(x/2)*2"); // или здесь
Serial.print(sin(x));
Serial.print(',');
Serial.println(sin(x * 0.5) * 2);
delay(40);
}
Arduino IDE 2.x #
Здесь чуть сложнее: данные нужно отправлять в формате подпись1:данные1,подпись2:данные2
+ перенос строки:
void setup() {
Serial.begin(115200);
}
float x;
void loop() {
x += 0.6;
Serial.print("sin(x):");
Serial.print(sin(x));
Serial.print(',');
Serial.print("sin(x/2)*2:");
Serial.println(sin(x * 0.5) * 2);
delay(40);
}