ESP8266基于Lua开发使用U8g2模块驱动 i2c ssd1306 OLED显示

news/2024/11/25 18:27:34/

ESP8266基于Lua开发使用U8g2模块驱动 i2c ssd1306 OLED显示

  • 📍相关篇《ESP8266基于Lua开发点灯示例》

  • 📖U8g2对应的API接口函数:https://nodemcu.readthedocs.io/en/release/modules/u8g2/

  • 📺驱动显示效果:
    在这里插入图片描述

  • 🔖官方U8g2驱动Demo :https://github.com/nodemcu/nodemcu-firmware/blob/release/lua_examples/u8g2/graphics_test.lua

  • ✨在使用U8g2时,可能会出现上传过程中报错的问题:

  • 📢上传报错:Waiting answer from ESP - Timeout reached. Command aborted.Waiting answer from ESP - Timeout reached.
    🗝 处理办法就是,ESPPlorer不使能应答。

在这里插入图片描述

⛳注意事项

  1. 使用U8g2库,跑官方的Demo示例需要,固件引入bit模块,因为在示例代码中有使用到,否则会报错。
    • 代码187行:
local function draw()u8g2_prepare()local d3 = bit.rshift(draw_state, 3)local d7 = bit.band(draw_state, 7)
  1. 所编译的固件有整数型和浮点型固件,如果使用整数型固件那么跑官方Demo示例需要修改对应的示例中的代码,将里面所出现的浮点型数值改为整数型,否则会报错。
  • 🔖下面折现使用带浮点型的数值,在烧录到使用整数型固件的esp8266中是不支持的。

local function u8g2_bitmap_modes(transparent)local frame_size = 24disp:drawBox(0, frame_size * 0.5, frame_size * 5, frame_size)disp:drawStr(frame_size * 0.5, 50, "Black")disp:drawStr(frame_size * 2, 50, "White")disp:drawStr(frame_size * 3.5, 50, "XOR")
  1. 使用U8g2官方示例默认启用的是I2c接口(SCL:D6,SDA:D5)
  2. 编自己编译固件的时候,勾选U8g2模块后,在下面选择对应的屏幕接口,一定要和代码中的所使用的构造函数的接口一致,否则会报错,找不到变量
    在这里插入图片描述

-- setup I2c and connect display
local function init_i2c_display()-- SDA and SCL can be assigned freely to available GPIOslocal sda = 5 -- GPIO14local scl = 6 -- GPIO12local sla = 0x3ci2c.setup(0, sda, scl, i2c.SLOW)disp = u8g2.ssd1306_i2c_128x64_noname(0, sla)
end

📝I2C驱动示例代码

在这里插入图片描述

-- 管脚定义
local sda = 5 -- GPIO14
local scl = 6 -- GPIO12
local sla = 0x3c  -- oled的地址,一般为0x3c
-- 初始化
function init_oled()-- iic总线 和 oled初始化i2c.setup(0, sda, scl, i2c.SLOW)disp = u8g2.ssd1306_i2c_128x64_noname(0, sla)-- 设置字体disp:setFont(u8g2.font_unifont_t_symbols)disp:setFontRefHeightExtendedText()--disp:setDrawColor(1)disp:setFontPosTop()--disp:setFontDirection(0)-- 画边框--disp:drawFrame(0, 0, 128, 64)
end
-- 显示函数
function oled_show_msg()-- 设置显示内容disp:drawStr(0, 0,  " Perseverance51")disp:drawStr(0, 16, "  Hello World!")disp:drawStr(0, 32, "  9527")disp:drawStr(0, 48, "  greentree")-- 将内容发送到oleddisp:sendBuffer()
end
-- 主函数
function main()init_oled()oled_show_msg()
end
-- 运行程序
main()

http://www.ppmy.cn/news/94646.html

相关文章

从月薪8k到月薪30k,自动化测试究竟该怎样学...

绝大多数测试工程师都是从功能测试做起的,工作忙忙碌碌,每天在各种业务需求学习和点点中度过,过了好多年发现自己还只是一个功能测试工程师。 随着移动互联网的发展,从业人员能力的整体进步,软件测试需要具备的能力要…

微星 B460M 迫击炮 intel i5 10500 电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件配置 硬件型号驱动情况 主板微星 B460M 迫击炮 处理器intel i5 10500 comet lake已驱动 内存SK Hynix 32 GB (2x16) 2400 MHz DDR4已驱动 硬盘MTFDHBA512TDV-1AZ1…

K8s环境部署Triton实现云端模型推理

前置条件:K8集群、helm 1、以模型名作为目录名,创建目录 mkdir resnet50_pytorch 2、将模型文件、配置文件(输入、输出等)存到刚创建的目录下,resnet50_pytorch目录下文件层级结构如下 model-respository/ └── …

Android系统的JNI原理分析(7)- Android中JNI的高级用法

声明 前阶段在项目中使用了Android的JNI技术,在此文中做些技术知识总结。此篇参考一些博客和书籍,不方便逐一列出,仅供学习、知识分享,代码基于Android 7.1.1。Android JNI函数参考:‘Raw’ JNI interface to Android Dalvik (Java) VM from Mono (CS/JS)本章Demo下载:De…

开源网安亮相粤港澳大湾区CIO高峰论坛,保障企业数字化安全转型

近日,由深圳市工业化与信息化局、深圳市科学技术协会指导,深圳市CIO协会主办的“2023中国(深圳)数字化转型大会暨粤港澳大湾区CIO高峰论坛”圆满完成。开源网安作为拥有软件安全领域全链条产品的厂商,携多年来打造的国产化软件安全替代方案&a…

vivo软件开发马拉松大赛学习总结

vivo软件开发马拉松大赛学习总结 后端技术部署使用到的docker镜像MySQL部署后端项目部署jenkinsfile swagger配置跨域解决 其他 后端技术 部署 后端部分是使用docker来进行部署的,部署在服务器的/home/vivo-backend/目录下 使用到的docker镜像 MySQL:5.7基于open…

深度学习编译器

1.为什么需要深度学习编译器 深度学习编译器主要为解决不同框架下训练的模型部署到指定的某些设备上时所遇到的一系列复杂的问题,即将各种深度学习训练框架的模型部署到各种硬件所面临的问题; 首先深度学习领域,从训练框架看,当前…

从零开始:使用低代码平台开发OA系统的教程

随着中小型企业持续拥抱数字化转型,对支持业务流程的定制软件应用程序的需求增加。而办公自动化(OA)系统是一个有助于自动执行重复性任务并简化工作流程的系统。按照传统的开发模式,开发OA系统可能既耗时又昂贵,需要经验丰富的开发人员从头开…