如何自制一个串口显示的图表

2025-11-08 11:06:04

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、放一张图

如何自制一个串口显示的图表

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢