在 RT-Thread 上使用单色屏 UI 库 - U8G2

news2024/11/24 17:30:48

U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,并支持如SSD1306等多种类型的OLED驱动。

U8g2的官方开源地址为:https://github.com/olikraus/u8g2

由于官方已经对 RT-Thread 做了一定的适配,并且存在于 RT-Thread 的软件包生态中,所以在 RT-Thread 平台上使用这个 UI 库会变得非常简单,接下来我们就来详细演示一下。

演示所用到的资源如下:

  • ART - PI

  • 128 * 64 OLED (SSD1306驱动)

  •  RT-Thread Studio V2.2.6

虽然我用到的硬件为 ART-PI,但由于RT-Thread 本身是支持多种芯片和开发板的,所以如果使用的是其他硬件平台,其配置与使用方法也都是一样的。

同时由于 u8g2 本身也支持了多种单色屏驱动芯片(如SSD1306,SH1107,ST7511等)与通信方式(IIC、SPI等),因此即使你手中的屏幕不是 SSD1306 驱动的,通过参考样例中的代码进行少量修改甚至无须修改也能够运行起来。

接下来我们开始创建工程。打开 RT-Thread Studio,新建一个 RT-Thread 项目,选择基于开发板,在开发板列表中选择 STM32H750-RT-ART-Pi,工程的详细参数如下图所示:

如果你的开发板列表中没有STM32H750-RT-ART-Pi,则需要在 SDK-Manager 中下载这个SDK,具体步骤如下:

1. 点击上方工具栏中的 SDK Manager 按钮:

2. 在弹出的 SDK 管理器界面中打开 Board_Support_Packages,并找到 STMicroelectronics 一栏:

3. 在该栏目中找到 STM32H750-RT-ART-Pi 并选择最新版本进行安装:

图片

基础工程创建好后,我们点击项目资源管理器的 RT-Thread Settings 按钮打开软件包管理界面,并点击 添加软件包 按钮。

图片

在弹出的软件包选择界面的搜索栏中输入 u8g2 进行搜索,并选择搜索结果中的 u8g2-official 进行添加,该版本是 u8g2 官方版本,也是最新版本。

图片

添加完成后我们关闭选择界面,来到软件包管理界面的主界面,此时可以看到列表中已经出现了 u8g2 的软件包卡片,此时我们将鼠标移到 u8g2 卡片上,点击 配置项 进行配置。

图片

由于我使用的 OLED 是 SSD1306 与 I2C 驱动的(软件模拟I2C),而官方正好有对应的例程,因此在配置项中,仅需打开 U8G2 Examples -> SSD1306(I2C的版本):

图片

点击上方工具栏的保存按钮或使用 Ctrl+S 进行配置保存,此时 RT-Thread Studio 会自动下载软件包并完成配置。

图片

工程配置好后我们还需要修改I2C接口对应的引脚。打开 packages > u8g2-official-latest > sys > rt-thread > examples 下的例程源文件:

图片

找到开头的两个I2C引脚定义,由于我是接到了 H2 和 H3 两个 GPIO上,因此我的配置修改为:

图片

修改完成后点击编译:

图片

编译通过,此时就可以下载我们的例程到板子里了。不过这里需要注意,当前步骤在 RT-Thread Studio 下是可以编译成功的,但是如果你是 MDK,则在此时是会编译出错的,具体什么原因这里留个悬念,下次出 MDK 环境的使用案例时会讲到并解决这个编译问题。

下载完成后我们的屏幕上暂时还没有显示,这是因为例程中是通过一个命令行的指令来启动 U8G2 显示的:

图片

可以看到这里注册了 u8g2_ssd1306_12864_sw_i2c_example 这个命令。

此时需要我们打开终端,连接到 ART-PI 的命令行,输入 u8g2 再按下 TAB 键,系统会自动补全指令:

图片

按下回车后即可看到屏幕被点亮:

图片

此时我们的 U8G2 就能够正常工作了。接下来就靠大家发挥各自的想象力,去创造属于自己的有趣界面吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2118341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Python实现时间序列模型实战——Day 15: 时间序列模型的选择与组合

一、学习内容 1. 模型选择的标准与方法(如 AIC、BIC) 在时间序列建模中,模型的选择是非常重要的,常用的模型选择标准包括 AIC (Akaike Information Criterion) 和 BIC (Bayesian Information Criterion)。 AIC (Akaike Informat…

U盘管控软件|禁止拷贝怎么解决?防止U盘拷贝的6款专业软件推荐

某公司员工将U盘插入公司电脑拷贝了重要的研发资料,随后该员工跳槽至竞争对手公司,导致公司商业机密外泄,造成了巨大的经济损失。 随着移动设备的普及,U盘的使用为工作带来了便利,但同时也增加了数据泄密的风险。这一案…

记一次knife4j文档请求异常 SyntaxError: Unexpected token ‘<‘, ... is not valid JSON

knife4j页面报错问题定位 前几天开发新接口,开发完成后想使用knife4j测试一下接口功能,突然发现访问页面报错提示:knife4j文档请求异常,但之前运行还是正常的,想想会不会与升级依赖有关系,启动其他微服务发…

非标金属零件加工的质量与效率是如何体现的?

在现代工业制造领域中,非标金属零件加工以其独特的方式实现了质量与效率的完美融合,成为推动众多行业发展的关键力量。时利和将详细解析非标金属零件加工的质量与效率是如何体现的? 一、先进设备保障高效加工 非标金属零件加工往往依赖于先进的加工设备…

从文字到世界:2024外语阅读大赛报名开启,赛氪网全程护航

中国外文局CATTI项目管理中心与中国外文界联合宣布,将举办2024年外语阅读大赛,旨在激发外语学习兴趣,选拔并培养优秀的语言应用人才,同时向世界展示和传播具有中国特色的优秀文化。此次大赛旨在激发外语学习兴趣,选拔优…

arm64高速缓存基础知识

高速缓存的替换策略 随机法:随机地确定替换的高速缓存行,由一个随机数产生器产生随机数来确认替换行 FIFO法:选择最先调入的高速缓存行进行替换 LRU法:最少使用的行优先替换。 高速缓存的共享属性 内部共享的高速缓存通常指的…

50ETF期权交易对手方是谁?对手方怎么交易?

今天期权懂带你了解50ETF期权交易对手方是谁?对手方怎么交易?上证50ETF期权投资作为目前金融业呼声较高的投资品种,其实与其他类型的金融产品相比,风险是相对较低的了,因为对于投资者而言,亏损只会影响到权…

《mkcert介绍及使用》

🤖 作者简介:水煮白菜王 ,一位资深前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧✍。 感谢支持💕💕💕 关…

如何在 DigitalOcean Droplet 云服务器上部署 Next.js 应用

Next.js 是一个流行的 React 框架,可轻松构建服务器渲染的 React 应用程序。在本教程中,我们将介绍如何使用 Nginx 作为反向代理,在 DigitalOcean 的 droplet 云主机上部署 Next.js 应用程序。以下是逐步指南,假设你已经准备好部署…

数学建模笔记—— 线性规划

数学建模笔记—— 线性规划 线性规划1. 模型引出1.1 线性规划模型的三要素1.2 线性规划模型建立步骤1.3 线性规划的表现形式1.4 线性规划的模型特点 2.典型例题3. python代码求解3.1 求解KK升级的问题3.2 求解投资收益问题 线性规划 在人们的生产实践中,经常会遇到…

jenkins工具的介绍和gitlab安装

使用方式 替代手动,自动化拉取、集成、构建、测试;是CI/CD持续集成、持续部署主流开发模式中重要工具;必须组件 jenkins-gitlab,代码公共仓库服务器(至少6G内存);jenkins-server,需…

【LoRa】对TX与RX的TOA时间的理解

目录 1 前言2 解释说明3 延申-计算TOA 1 前言 大家可能已经知道在射频传输中,TOA(Time on Air)是指本包传输所需时间。本章主要来讨论如何理解这段时间,并从发送端和接收端一起来理解。本章是基于LoRa所做的测试,但我…

OutBrain原生广告新赛道助力欧美流量变现优势与实战策略

揭秘欧美流量变现新蓝海:OutBrain原生广告的优势与实战策略 在数字化时代,流量即金钱的观念深入人心,尤其是对于欧美市场而言,高效、精准的流量变现策略成为了众多网站主、博主及内容创作者关注的焦点。OutBrain,作为…

凭什么要买净水器?

近年来,购买净水器的人越来越多,净水器似乎成了一件必不可少的家电。 但仍有部分人保持着传统的观念,认为喝自来水烧开的白开水是最健康的,净水器都是商家炒作出来的,不可信。 可事实是这样吗?其实你家水…

多语言ASO – 本地化的10个技巧

ASO优化是一个复杂的领域,即使你只关注讲英语的用户。如果您想面向国际受众并在全球范围内发展您的应用程序业务,您必须在App Store和Google Play Store上本地化应用程序的产品页面。不过,应用程序商店本地化的过程也有很多陷阱。 应用商店本…

U盘数据恢复秘籍:四款软件的亲测推荐!

U盘作为便捷的存储工具被广泛使用,但随之而来的是数据丢失的风险。面对U盘中的宝贵资料不慎丢失,如何高效、安全地恢复成为关键。推荐几款亲测好用的U盘数据恢复软件! 第一款:福昕数据恢复 直达链接:www.pdf365.cn/f…

elementui Cascader 级联选择器的使用总结

实现效果 技术要点总结如下: 1、点击添加自动增加多行,实现自主选择增加多条节点数据 2、节点地址使用的是Cascader 级联选择器,需要动态生成,涉及到一个技术要点是:因v-modal只能获取value不能获取label,故…

CCF编程能力等级认证GESP—C++7级—20240907

CCF编程能力等级认证GESP—C1级真题 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)小杨寻宝矩阵移动 单选题(每题 2 分,共 30 分&…

Spring AOP,通知使用,spring事务管理,spring_web搭建

spring AOP AOP概述 AOP面向切面编程是对面向对象编程的延续(AOP (Aspect Orient Programming),直译过来就是 面向切面编程,AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。) 面向切面编…

开放系统,面向各类业务需求可提供定制化服务的智慧物流开源了

智慧物流视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。构建基于Ai技术的…