原创 【萤火工场CEM5826-M11测评】OLED显示雷达数据

2024-12-10 14:03 137 0 分类: MCU/ 嵌入式 文集: Arduino

【萤火工场CEM5826-M11测评】OLED显示雷达数据

本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。

该项目整体分为两部分:

一、框架显示;

二、数据采集与填充显示。

为了减小 MCU 负担,采用 局部刷新 的方案。

1. 显示框架



所需库函数 Wire.hAdafruit_GFX.hAdafruit_SSD1306.h .

代码

#include 
#include
#include
#include "logo_128x64.h"
#include "logo_95x32.h"

#define OLED_RESET 4
Adafruit_SSD1306display(128, 64, &Wire, OLED_RESET);

voidsetup()
{
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
display.clearDisplay(); // 清屏
display.drawBitmap(0, 0, logo, 128, 64, 1); //画出字符对应点阵数据
display.display();
delay(1000);
display.clearDisplay();
/*-------------------- Display picture and text ---------------------------*/
display.drawBitmap(16, 0, logo_small, 95, 32, 1);
display.setTextColor(WHITE);  //设置字体颜色
display.setTextSize(2);  //设置字体大小 1 is default 6x8, 2 is 12x16, 3 is 18x24
display.setCursor(0,33); //设置起始光标
display.print("v=");
display.setCursor(72,33); //设置起始光标
display.print("km/h");
display.setCursor(0,49); //设置起始光标
display.print("str=");
display.display();
}

voidloop()
{
}

效果

2. 显示数据

目标:实现雷达监测数据的对应填充显示,包括速度 v 和信号强度 str

代码

思路:将之前帖子中实现的串口打印数据与 OLED 显示框架结合,将 vstr 两数据分别填充至 OLED 屏预留位置处即可。

#include 
#include
#include
#include "logo_128x64.h"
#include "logo_95x32.h"

#define OLED_RESET 4
Adafruit_SSD1306display(128, 64, &Wire, OLED_RESET);

Stringcomdata="";

voidsetup()
{
Serial.begin(115200);
while (Serial.read() >=0){}//clear serialbuffer
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
display.clearDisplay(); // 清屏
display.drawBitmap(0, 0, logo, 128, 64, 1); //画出字符对应点阵数据
display.display();
delay(1000);
display.clearDisplay();
/*-------------------- Display picture and text ---------------------------*/
display.drawBitmap(16, 0, logo_small, 95, 32, 1);
display.setTextColor(WHITE);  //设置字体颜色
display.setTextSize(2);  //设置字体大小 1 is default 6x8, 2 is 12x16, 3 is 18x24
display.setCursor(0,33); //设置起始光标
display.print("v=");
display.setCursor(80,33); //设置起始光标
display.print("km/h");
display.setCursor(0,49); //设置起始光标
display.print("str=");
display.display();
}

voidloop()
{
if (Serial.available() >0)
{
chardata=Serial.read();
comdata+=data;
if (data=='\n')
    {// type of comdata: v=1.0 km/h, str=10151
intseparatorIndex=comdata.indexOf(','); // 假设分隔符为逗号
if (separatorIndex!=-1)
    {
Stringpart1=comdata.substring(0, separatorIndex); // 第一个部分
Stringpart2=comdata.substring(separatorIndex+1); // 第二个部分
// 打印分割后的数据
//Serial.println(part1); // type of part1: v=1.0 km/h
//Serial.println(part2); // type of part2: str=10151
/*------------ part1 : v=1.0 km/h ----------*/
intpart1separatorIndex=part1.indexOf('='); //index of '='
if (part1separatorIndex!=-1)
      {
Stringvlc=part1.substring(part1separatorIndex+1); // index of velocity, type of vlc is 1.0 km/h
// vlc: 1.0 km/h
intVLCseparatorIndex=vlc.indexOf(' '); // index of ' '
Stringv=vlc.substring(0, VLCseparatorIndex);// v only include number
floatVn=v.toFloat();
Serial.print(Vn); // print velocity number
Serial.print(',');
//display.setCursor(25,33); //设置起始光标
display.fillRect(25, 33, 60, 16, BLACK);
display.display();
display.setCursor(25,33); //设置起始光标
display.print(Vn);
display.display();
      }
/*------------- part2 : str=10151 ------------------*/
intpart2separatorIndex=part2.indexOf('='); //index of '='
if (part2separatorIndex!=-1)
      {
Stringstrng=part2.substring(part2separatorIndex+1); // strng only include number
intSn=strng.toInt();
Serial.print(Sn); // print strength number
Serial.println();
//display.setCursor(49,49); //设置起始光标
display.fillRect(49, 49, 79, 16, BLACK);
//display.setPixelColor();
display.display();
display.setCursor(49,49); //设置起始光标
display.print(Sn);
display.display();
      }
    }
comdata="";
  }
}
}

效果

这里由于字体设置为 2 号,无法满足 km/h 单位的完整填充,因此被数据覆盖住一部分,可根据实际需求调整字体大小。

同时支持串口绘图和串口数据打印。

作者: 无垠的广袤, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4085469.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
0
关闭 站长推荐上一条 /3 下一条