如何自制一个串口显示的图表
1、下载processing和安装java,自行百度方法,字体选择MONO_SPACE可以设置中文注释
2、串口发送数据的格式是以空格隔开
arduino示例如下://这里是我自己的mpu6050库,你们参考数据格式就好。
#include "Mpu6050_Kalman.h"
void setup() {
// put your setup code here, to run once:
init_mpu6050();
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
getXYZ_mpu6050(1.05,1,1.0); //好
Serial.print(agx); Serial.print(" ");
Serial.print(agy); Serial.print(" ");
Serial.println(agz);
delay(50);
}
3、processing代码如下:
import processing.serial.*;
Serial myPort;
int xPos = 1;
char classflag='A'; //做什么样的图形
int linenum; //判断有几条线段
float[] SerialData= new float[20],SerialData_last= new float[20];
void setup () {
size(1200, 600); //在这里定义了height和width
println(Serial.list());
myPort = new Serial(this, Serial.list()[3], 9600);//选择串口
myPort.bufferUntil('\n');
background(0);
textSize(20);
textAlign(CENTER);
}
void draw () {
text("classflag:",48,20);
text(" ",100,20);
text(classflag,100,20);
text("linenum:",48,40);
text(linenum,100,40);
text("color:yellow blue white",110,80);
switch(classflag)
{
case 'A':
for(int i=0;i<linenum;i++)
{
choose(i);
line(xPos,height,xPos,height-SerialData[i]);
}
break;
case 'B':
for(int i=0;i<linenum;i++)
{
strokeWeight(1);
choose(i);
line(xPos,height-SerialData[i],xPos,height-SerialData_last[i]);
}
break;
case 'C':
for(int i=0;i<linenum;i++)
{
strokeWeight(8);
choose(i);
point(xPos,height-SerialData[i]);
}
break;
}
if (xPos >= width) {
xPos = 0;
background(0);
} else {
xPos++;
}
}
void choose(int Color)//选择线或者点的颜色
{
switch(Color)
{
case 1:
stroke(226, 190, 137);//黄
break;
case 2:
stroke(7, 16, 240);//蓝色
break;
case 3:
stroke(255, 255, 255);//白色
break;
default:
stroke(255, 255, 255);//白色
break;
}
}
//串口事件
void serialEvent (Serial myPort) {
String inString = myPort.readStringUntil('\n');
if (inString != null)
{
SerialData_last=SerialData;
inString = trim(inString);
SerialData=float(split(inString,' '));
linenum=SerialData.length;
println(" ");
for(int i=0;i<SerialData.length;i++)
{
println(SerialData[i]);
SerialData[i]= map(SerialData[i], -180, 180, 0, height);
}
println(" ");
}
}
//按键事件,选择显示的类型
void keyPressed()
{
switch(key)
{
case 'A':
classflag='A';
break;
case 'B':
classflag='B';
break;
case 'C':
classflag='C';
break;
}
background(0);
xPos=0;
}
4、放一张图
