Arduino IDE 2 串口绘图仪(Serial Plotter)

串口绘图仪的规则

串口绘图仪实际上是从预设的串口获取值并将其绘制在xy轴图。X轴可以说是一个时间实例,被等分成500份,每获取到一组数据向左滑动一个单位,读取数据的速度起快,滑动就越快。 Y轴代表来自串口的值,可以是单个也可以是一组 。在读取串口数据时遇到"\n"(换行或通过Serial.println(“”))则表示切换到下一行数据,同行数据的不同组的数据通过(,)间隔,像下面的形式。

100, 200, 300
100, 200, 300
100, 200, 300
100,200, 300

可以考虑成一个二维数组。这个输出在绘图仪中可以绘制出三条线。

image-20220106113028925

image-20220106112737536

## 显示多条曲线

在代码中实现一行数据的拼结

方法一

先拼结数据,一次打印。

String temp = "";
temp.concat(a);
temp.concat(",");
temp.concat(b);
Serial.println(temp);
方法二

直接打印,数据间隔使用逗号(,),最后使用println打印数据。

Serial.print(a);
Serial.print(",");
Serial.println(b);
方法三

封装函数,假设现在只打印整型(int)。

void plotterPrint(int val, boolen isEnd = false) {
	Serial.print(val);
	if (isEnd) }{
		Serial.println("");
	} else {
		Serial.print(",")
	}
}

## 调试

打印直线

打印三条直线

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void print_1() {
  Serial.print(100);
}

void print_2() {
  Serial.print(200);
}

void print_3() {
  Serial.print(300);  
}

void loop() {
  // put your main code here, to run repeatedly:
  print_1();
  Serial.print(",");
  print_2();
  Serial.print(",");
  print_3();
  Serial.print("\n"); // Serial.println("");
  delay(100);
}
  • 画线的速度能过delay()来控制;
  • Serial.println()最好放在loop的最后;
  • 如果两个Serial.print()之间不添加逗号(,),绘图仪上会出现一个两个数直接拼结起来的数据。
打印三角函数
double divVal = 0.0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void print_1() {
  Serial.print(10 + cos(divVal));
}

void print_2() {
  Serial.print(20 + sin(divVal));
}

void print_3() {
  Serial.print(30 + cos(divVal + PI));  
}

void loop() {
  // put your main code here, to run repeatedly:
  print_1();
  Serial.print(",");
  print_2();
  Serial.print(",");
  print_3();
  Serial.print("\n");
  divVal +=  2 * PI / 16.0;
  delay(100);
}

image-20220106114226430

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐