国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OLED 顯示雷達數據

單片機/嵌入式開發 ? 來源:單片機/嵌入式開發 ? 作者:單片機/嵌入式開發 ? 2024-12-10 13:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【螢火工場CEM5826-M11測評】OLED顯示雷達數據

本文結合之前關于串口打印雷達監測數據的研究,進一步擴展至 OLED 屏幕顯示。

該項目整體分為兩部分:一、框架顯示;二、數據采集與填充顯示。

為了減小 MCU 負擔,采用 局部刷新 的方案。

1. 顯示框架

target_frame.jpg

所需庫函數 Wire.hAdafruit_GFX.hAdafruit_SSD1306.h .

代碼

#include < Wire.h >
#include < Adafruit_GFX.h >
#include < Adafruit_SSD1306.h >
#include "logo_128x64.h"
#include "logo_95x32.h"
?
#define OLED_RESET 4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
?
void setup()
{
  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();
}
?
void loop()
{
}

效果

IMG_20241210_114559.jpg

2. 顯示數據

目標:實現雷達監測數據的對應填充顯示,包括速度 v信號強度 str

IMG_20241210_125011.jpg

代碼

思路:將之前帖子中實現的串口打印數據與 OLED 顯示框架結合,將 vstr 兩數據分別填充至 OLED 屏預留位置處即可。

#include < Wire.h >
#include < Adafruit_GFX.h >
#include < Adafruit_SSD1306.h >
#include "logo_128x64.h"
#include "logo_95x32.h"
?
#define OLED_RESET 4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
?
String comdata = "";
?
void setup()
{
  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();
}
?
void loop()
{
  if (Serial.available() > 0) 
  {
    char data = Serial.read();
    comdata += data;
    if (data == 'n')
    {// type of comdata: v=1.0 km/h, str=10151
      int separatorIndex = comdata.indexOf(','); // 假設分隔符為逗號
      if (separatorIndex != -1)
      {
        String part1 = comdata.substring(0, separatorIndex); // 第一個部分
        String part2 = 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 ----------*/
        int part1separatorIndex = part1.indexOf('='); //index of '='
        if (part1separatorIndex != -1)
        {
          String vlc = part1.substring(part1separatorIndex + 1); // index of velocity, type of vlc is 1.0 km/h
          // vlc: 1.0 km/h
          int VLCseparatorIndex = vlc.indexOf(' '); // index of ' '
          String v = vlc.substring(0, VLCseparatorIndex);// v only include number
          float Vn = 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 ------------------*/
        int part2separatorIndex = part2.indexOf('='); //index of '='
        if (part2separatorIndex != -1)
        {
          String strng = part2.substring(part2separatorIndex + 1); // strng only include number
          int Sn = 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 = "";
    }
  }
}

效果

IMG_20241210_125011.jpg

這里由于字體設置為 2 號,無法滿足 km/h 單位的完整填充,因此被數據覆蓋住一部分,可根據實際需求調整字體大小。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2576

    文章

    55028

    瀏覽量

    791227
  • 單片機
    +關注

    關注

    6076

    文章

    45494

    瀏覽量

    670245
  • OLED
    +關注

    關注

    121

    文章

    6357

    瀏覽量

    233619
  • 雷達
    +關注

    關注

    52

    文章

    3327

    瀏覽量

    123864
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用硬件SPI1輪詢模式來實現驅動OLED顯示

    此篇介紹使用硬件SPI1輪詢模式來實現驅動OLED顯示屏硬件連接 GND ——GND VCC ——3.3V DO——PA5 DI——PA7 RES ——PB1 DC——PB0 CS——PA4 軟件
    發表于 01-27 12:36

    運用CW32F030芯片的SPI來實現0.96寸的oled屏幕顯示

    本文通過運用CW32F030芯片的SPI來實現0.96寸的oled屏幕顯示。接下來我們一共分為這幾個步驟進行配置。 首先我們需要配置相關的IO口以及SPI的初始化: void
    發表于 01-21 06:33

    【瑞薩RA6E2】硬件IIC驅動九軸傳感器與OLED顯示

    OLED屏幕上實時顯示傳感器采集的原始數據。項目直接使用現有的完整代碼實現,未對傳感器數據進行濾波處理,僅獲取和顯示基本
    發表于 11-27 02:18

    蜂鳥E203驅動OLED顯示

    利用GPIO模擬IIC驅動4pin的OLED顯示字符,開發平臺為芯來官方IDE。 不想寫過程,上傳整個工程文件,主要代碼如下: 下載:led
    發表于 10-31 06:08

    【六岳微LY-F335開發板試用體驗】epwm啟動ADC并在OLED顯示結果

    芯片,所以工具鏈選擇了CCS10等可用于TI公司28335MCU的編譯下載仿真軟件,工具非常成熟,安裝完成之后也易于使用。這些已經在上篇介紹完成,這一篇測評著重測試ADC轉換結果在OLED上的顯示
    發表于 09-26 17:32

    【六岳微LY-F335開發板試用體驗】OLED顯示和調試過程中的坑

    使用的UART串口通信,在此基礎上介紹工程文件作用。 第一步硬件接線,在數據手冊上查到可以使用了GPIO1、3、5、7作為OLED通信引腳,在開發板上找到之后,將GPIO1、3作為SDA引腳和SCL引腳
    發表于 09-22 19:17

    【RA4E2開發板評測】oled顯示光照度+串口通信

    /object_oriented_module_programming_method_in_ARM_embedded_system/ 選擇P402、P401為OLED顯示屏I2C接口的SCL與SDA引腳,選擇
    發表于 09-17 21:01

    【RA4E2開發板評測】串口傳輸+OLED顯示

    /object_oriented_module_programming_method_in_ARM_embedded_system/ 開發板如圖: 選擇P402、P401為OLED顯示屏I2C接口的SCL與SDA
    發表于 09-16 21:18

    [RA4M2-SENSOR]使用OLED顯示光照傳感器信號數據

    RA使用OLED顯示光照度測評 1. 套件概述 RA4M2-SENSOR 是一款基于 RA4M2 系列微控制器的評估套件,支持 TrustZone 技 術和片內安全加密引擎(SCE),提供硬件級安全
    發表于 09-13 20:30

    【RA4M2-SENSOR】+OLED顯示驅動

    ); OLED_SCLK_Clr(); delay_us(3); } } 對顯示屏的初始化函數為: void OLED_Init(void) { Write_IIC_Command(0xAE
    發表于 09-02 18:28

    【Milk-V Duo S 開發板免費體驗】DuoS 超聲波測距 OLED 顯示

    (340米/秒)) / 2 OLED 顯示 ?初始化 I2C 接口 ?使用 SSD1306 庫繪制文本 ?定時刷新距離數據 代碼如下: #include <Wire.h>
    發表于 08-22 03:55

    硅基OLED顯示器:在擴展現實(XR)中的應用

    基于OLED的微顯示器作為一種先進的微顯示技術,有時被稱為硅基OLED(OLEDoS),它突出了OLED技術與基于半導體(CMOS)的硅片的
    的頭像 發表于 08-11 14:27 ?1627次閱讀
    硅基<b class='flag-5'>OLED</b>微<b class='flag-5'>顯示</b>器:在擴展現實(XR)中的應用

    【RA-Eco-RA6M4開發板評測】+OLED顯示驅動

    ;lt;<1; delay_us(3); OLED_SCLK_Set(); delay_us(3); OLED_SCLK_Clr(); delay_us(3); } } 對顯示屏的初始化
    發表于 07-23 17:33

    【RA-Eco-RA4M2開發板評測】RA-Eco-RA4M2 OLED顯示

    高壓,直接接 3.3V 就可以工作了。 本文將介紹基于I2C接口的OLED顯示。 1.2 OLED的I2C通信協議 I2C總線協議允許數據和命令在設備間的通訊。 1.2.1 I2C寫模
    發表于 05-03 23:12

    Techwiz OLED應用:透明顯示

    如今,透明顯示器作為未來的顯示技術之一已經引起了廣泛的關注。特別是,使用OLED器件的透明顯示器已被積極研究。TechWiz OLED的發光
    發表于 03-17 11:35