广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

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

    来源:网络收集  点击:  时间:2024-05-05
    【导读】:
    从事嵌入式的同学有没有这种烦恼:看见串口调试助手里一大堆的数字是不是很烦恼?有没有什么更好的显示方法?当然有了,借助processing就可以实现该功能,不要急,这款软件和arduino比较像,当然如果你不想研究,直接拿过来就可以使用了啊!哈哈前提是你只要发送以空格为间隔的字符即可。工具/原料more电脑一款能够通过串口发送数据的单片机processing方法/步骤1/4分步阅读

    下载processing和安装java,自行百度方法,字体选择MONO_SPACE可以设置中文注释

    2/4

    串口发送数据的格式是以空格隔开

    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/4

    processing代码如下:

    import processing.serial.*;

    Serial myPort;

    int xPos = 1;

    char classflag=A; //做什么样的图形

    int linenum; //判断有几条线段

    float SerialData= new float,SerialData_last= new float;

    void setup () {

    size(1200, 600); //在这里定义了height和width

    println(Serial.list());

    myPort = new Serial(this, Serial.list(), 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;ilinenum;i++)

    {

    choose(i);

    line(xPos,height,xPos,height-SerialData);

    }

    break;

    case B:

    for(int i=0;ilinenum;i++)

    {

    strokeWeight(1);

    choose(i);

    line(xPos,height-SerialData,xPos,height-SerialData_last);

    激侨 }

    break;

    case C:

    for(int i=0;ilinenum;i++)

    {

    strokeWeight(8);

    choose(i);

    point(xPos,height-SerialData);

    }

    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;iSerialData.length;i++)

    {

    println(SerialData);

    SerialData= map(SerialData, -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/4

    放一张图

    注意事项

    processing中代码含义可以参考手册

    arduino只是示范格式而已,你们参考就好,其他单片机亦可

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.ff371.cn/art_683813.html

    ©2019-2020 http://www.ff371.cn/ 国ICP备20009186号05-19 03:06:45  耗时:0.033