|
|
@@ -1,155 +0,0 @@
|
|
|
---- 模块功能:u8g2demo
|
|
|
--- @module u8g2
|
|
|
--- @author Dozingfiretruck
|
|
|
--- @release 2021.01.25
|
|
|
--- LuaTools需要PROJECT和VERSION这两个信息
|
|
|
-PROJECT = "u8g2demo"
|
|
|
-VERSION = "1.0.1"
|
|
|
-
|
|
|
-log.info("main", PROJECT, VERSION)
|
|
|
-
|
|
|
--- sys库是标配
|
|
|
-_G.sys = require("sys")
|
|
|
-
|
|
|
---[[接线方式 780EPM开发板----------------------------------SSD1306
|
|
|
-LCD_VCC(LCD那组引脚以sim卡卡槽旁的LCD母排为1的第二个排母孔) ---(VCC)
|
|
|
-I2C1_SCL(CAMERA_SCL)----------------------------------------(SCL)
|
|
|
-I2C1_SDA(CAMERA_SDA)----------------------------------------(SDA)
|
|
|
-GND---------------------------------------------------------(GND)
|
|
|
-]]
|
|
|
-
|
|
|
--- 添加硬狗防止程序卡死
|
|
|
-wdt.init(9000) -- 初始化watchdog设置为9s
|
|
|
-sys.timerLoopStart(wdt.feed, 3000) -- 3s喂一次狗
|
|
|
-
|
|
|
--- gpio.setup(14, nil) -- 关闭GPIO14,防止camera复用关系出问题
|
|
|
--- gpio.setup(15, nil) -- 关闭GPIO15,防止camera复用关系出问题
|
|
|
-
|
|
|
-
|
|
|
-local rtos_bsp = rtos.bsp()
|
|
|
-
|
|
|
--- hw_i2c_id,sw_i2c_scl,sw_i2c_sda,spi_id,spi_res,spi_dc,spi_cs
|
|
|
-function u8g2_pin()
|
|
|
- if string.find(rtos_bsp, "780EPM") or string.find(rtos_bsp, "718PM") then
|
|
|
- return 1, 14, 15, 0, 14, 10, 8
|
|
|
- else
|
|
|
- log.info("main", "你用的不是780EPM 请更换demo测试")
|
|
|
- return
|
|
|
- end
|
|
|
-end
|
|
|
-
|
|
|
-local hw_i2c_id, sw_i2c_scl, sw_i2c_sda, spi_id, spi_res, spi_dc, spi_cs = u8g2_pin()
|
|
|
-
|
|
|
--- 日志TAG, 非必须
|
|
|
-local TAG = "main"
|
|
|
-local chinese =true
|
|
|
--- 主流程
|
|
|
-sys.taskInit(function()
|
|
|
-
|
|
|
- gpio.setup(2, 1) -- GPIO2打开给camera电源供电
|
|
|
- gpio.setup(28, 1) -- 1.2版本 GPIO28打开给lcd电源供电
|
|
|
- gpio.setup(29, 1) -- 1.3硬件版本 GPIO29打开给lcd电源供电
|
|
|
- sys.wait(2000)
|
|
|
-
|
|
|
- -- 初始化显示屏
|
|
|
- log.info(TAG, "init ssd1306")
|
|
|
-
|
|
|
- -- 初始化硬件i2c的ssd1306
|
|
|
- log.info("setup SSD1306", u8g2.begin({
|
|
|
- ic = "ssd1306",
|
|
|
- direction = 0,
|
|
|
- mode = "i2c_hw",
|
|
|
- i2c_id = hw_i2c_id
|
|
|
- })) -- direction 可选0 90 180 270
|
|
|
-
|
|
|
- log.info("设置字体模式", u8g2.SetFontMode(1))
|
|
|
- log.info("清屏", u8g2.ClearBuffer())
|
|
|
- log.info("设置字体为 oppo字体", u8g2.SetFont(u8g2.font_opposansm8))
|
|
|
- log.info("在显示屏上展示U8G2+LUATOS", u8g2.DrawUTF8("U8G2+LUATOS", 32, 22))
|
|
|
-
|
|
|
- if u8g2.font_opposansm12_chinese then
|
|
|
- u8g2.SetFont(u8g2.font_opposansm12_chinese)
|
|
|
- elseif u8g2.font_opposansm10_chinese then
|
|
|
- u8g2.SetFont(u8g2.font_opposansm10_chinese)
|
|
|
- elseif u8g2.font_sarasa_m12_chinese then
|
|
|
- u8g2.SetFont(u8g2.font_sarasa_m12_chinese)
|
|
|
- elseif u8g2.font_sarasa_m10_chinese then
|
|
|
- u8g2.SetFont(u8g2.font_sarasa_m10_chinese)
|
|
|
- else
|
|
|
- print("没有中文字库")
|
|
|
- chinese = false
|
|
|
- end
|
|
|
-
|
|
|
- if chinese then
|
|
|
- log.info("在显示屏显示中文", u8g2.DrawUTF8("中文测试", 40, 38)) -- 若中文不显示或乱码,代表所刷固件不带这个字号的字体数据
|
|
|
-
|
|
|
- end
|
|
|
- log.info("将存储器帧缓冲区的内容发送到显示器", u8g2.SendBuffer())
|
|
|
- sys.wait(2000)
|
|
|
- u8g2.ClearBuffer()
|
|
|
- if chinese then
|
|
|
- u8g2.DrawUTF8("屏幕宽度:" .. u8g2.GetDisplayWidth(), 40, 24)
|
|
|
- u8g2.DrawUTF8("屏幕高度:" .. u8g2.GetDisplayHeight(), 40, 42)
|
|
|
- else
|
|
|
- u8g2.DrawUTF8("width:" .. u8g2.GetDisplayWidth(), 40, 24)
|
|
|
- u8g2.DrawUTF8("height:" .. u8g2.GetDisplayHeight(), 40, 42)
|
|
|
- end
|
|
|
- sys.wait(5000)
|
|
|
- u8g2.SendBuffer()
|
|
|
-
|
|
|
- u8g2.ClearBuffer()
|
|
|
- u8g2.DrawUTF8("画线测试:", 30, 24)
|
|
|
- for i = 0, 128, 8 do
|
|
|
- u8g2.DrawLine(0, 40, i, 40)
|
|
|
- u8g2.DrawLine(0, 60, i, 60)
|
|
|
- u8g2.SendBuffer()
|
|
|
- sys.wait(100)
|
|
|
- end
|
|
|
-
|
|
|
- sys.wait(1000)
|
|
|
- u8g2.ClearBuffer()
|
|
|
- u8g2.DrawUTF8("画圆测试:", 30, 24)
|
|
|
- u8g2.DrawCircle(30, 50, 10, 15)
|
|
|
- u8g2.DrawDisc(90, 50, 10, 15)
|
|
|
- u8g2.SendBuffer()
|
|
|
-
|
|
|
- sys.wait(1000)
|
|
|
- u8g2.ClearBuffer()
|
|
|
- u8g2.DrawUTF8("椭圆测试:", 30, 24)
|
|
|
- u8g2.DrawEllipse(30, 50, 6, 10, 15)
|
|
|
- u8g2.DrawFilledEllipse(90, 50, 6, 10, 15)
|
|
|
- u8g2.SendBuffer()
|
|
|
-
|
|
|
- sys.wait(1000)
|
|
|
- u8g2.ClearBuffer()
|
|
|
- u8g2.DrawUTF8("方框测试:", 30, 24)
|
|
|
- u8g2.DrawBox(30, 40, 30, 24)
|
|
|
- u8g2.DrawFrame(90, 40, 30, 24)
|
|
|
- u8g2.SendBuffer()
|
|
|
-
|
|
|
- sys.wait(1000)
|
|
|
- u8g2.ClearBuffer()
|
|
|
- u8g2.DrawUTF8("圆角方框:", 30, 24)
|
|
|
- u8g2.DrawRBox(30, 40, 30, 24, 8)
|
|
|
- u8g2.DrawRFrame(90, 40, 30, 24, 8)
|
|
|
- u8g2.SendBuffer()
|
|
|
-
|
|
|
- sys.wait(1000)
|
|
|
- u8g2.ClearBuffer()
|
|
|
- u8g2.DrawUTF8("三角测试:", 30, 24)
|
|
|
- u8g2.DrawTriangle(30, 60, 60, 30, 90, 60)
|
|
|
- u8g2.SendBuffer()
|
|
|
-
|
|
|
- -- qrcode测试
|
|
|
- sys.wait(1000)
|
|
|
- u8g2.ClearBuffer()
|
|
|
- u8g2.DrawDrcode(4, 4, "https://docs.openluat.com", 30);
|
|
|
-
|
|
|
- u8g2.SendBuffer()
|
|
|
-
|
|
|
- -- sys.wait(1000)
|
|
|
- log.info("main", "u8g2 demo done")
|
|
|
-end)
|
|
|
-
|
|
|
--- 主循环, 必须加
|
|
|
-sys.run()
|