Просмотр исходного кода

add: 为air105添加demo/disp和demo/u8g2

Wendal Chen 4 лет назад
Родитель
Сommit
c6c8e95258
2 измененных файлов с 193 добавлено и 0 удалено
  1. 63 0
      demo/disp/Air105/main.lua
  2. 130 0
      demo/u8g2/Air105/main.lua

+ 63 - 0
demo/disp/Air105/main.lua

@@ -0,0 +1,63 @@
+
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "dispdemo"
+VERSION = "1.0.0"
+
+log.info("main", PROJECT, VERSION)
+
+-- sys库是标配
+_G.sys = require("sys")
+
+--[[
+硬件接线
+
+I2C屏幕                Air105开发板
+SCL                    (PE7)
+SDA                    (PE6)
+VCC                    3.3V
+GND                    GND
+]]
+
+--添加硬狗防止程序卡死
+if wdt then
+    wdt.init(15000)--初始化watchdog设置为15s
+    sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
+end
+
+----------------------------------------------------------------------
+-- 对接SSD1306
+function display_str(str)
+    disp.clear()
+    disp.drawStr(str, 1, 18)
+    disp.update()
+end
+
+function ui_update()
+    disp.clear() -- 清屏
+
+    disp.drawStr(os.date("%Y-%m-%d %H:%M:%S"), 1, 12) -- 写日期
+
+    disp.drawStr("Luat@Air101" .. " " .. _VERSION, 1, 24) -- 写版本号
+
+    disp.update()
+end
+
+-- 初始化显示屏
+log.info("disp", "init ssd1306") -- log库是内置库,内置库均不需要require
+disp.init({mode="i2c_sw", pin0=1, pin1=4}) -- 通过PA1 SLK/PA4 SDA模拟, 也可以用硬件i2c脚
+disp.setFont(1) -- 启用中文字体,文泉驿点阵宋体 12x12
+display_str("启动中 ...")
+
+sys.taskInit(function()
+    while 1 do
+        sys.wait(1000)
+        log.info("disp", "ui update", rtos.meminfo()) -- rtos是也是内置库
+        ui_update()
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 130 - 0
demo/u8g2/Air105/main.lua

@@ -0,0 +1,130 @@
+--- 模块功能: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")
+
+--[[
+硬件接线
+
+I2C屏幕                Air105开发板
+SCL                    (PE7)
+SDA                    (PE6)
+VCC                    3.3V
+GND                    GND
+]]
+
+--添加硬狗防止程序卡死
+if wdt then
+    wdt.init(15000)--初始化watchdog设置为15s
+    sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
+end
+
+-- 日志TAG, 非必须
+local TAG = "main"
+
+-- 初始化显示屏
+log.info(TAG, "init ssd1306")
+
+-- 初始化硬件i2c的ssd1306
+u8g2.begin({ic = "ssd1306",direction = 0,mode="i2c_hw",i2c_id=0,i2c_speed = i2c.FAST}) -- direction 可选0 90 180 270
+-- 初始化软件i2c的ssd1306
+-- u8g2.begin({ic = "ssd1306",direction = 0,mode="i2c_sw", i2c_scl=1, i2c_sda=4}) -- 通过PA1 SCL / PA4 SDA模拟
+
+u8g2.SetFontMode(1)
+u8g2.ClearBuffer()
+u8g2.SetFont(u8g2.font_opposansm8)
+u8g2.DrawUTF8("U8g2+LuatOS", 32, 22)
+u8g2.SetFont(u8g2.font_opposansm12_chinese)
+u8g2.DrawUTF8("中文测试", 40, 38)
+u8g2.SendBuffer()
+
+-- 联网主流程
+sys.taskInit(function()
+    sys.wait(2000)
+    u8g2.ClearBuffer()
+    u8g2.SetFont(u8g2.font_opposansm12_chinese)
+    u8g2.DrawUTF8("屏幕宽度", 20, 24)
+    u8g2.DrawUTF8("屏幕高度", 20, 42)
+    u8g2.SetFont(u8g2.font_opposansm8)
+    u8g2.DrawUTF8(":"..u8g2.GetDisplayWidth(), 72, 24)
+    u8g2.DrawUTF8(":"..u8g2.GetDisplayHeight(), 72, 42)
+    u8g2.SendBuffer()
+
+    sys.wait(2000)
+    u8g2.ClearBuffer()
+    u8g2.SetFont(u8g2.font_opposansm12_chinese)
+    u8g2.DrawUTF8("画线测试:", 30, 24)
+    for i = 0, 128, 8 do
+        u8g2.DrawLine(0,40,i,40)
+        u8g2.DrawLine(0,60,i,60)
+        u8g2.SendBuffer()
+    end
+
+    sys.wait(1000)
+    u8g2.ClearBuffer()
+    u8g2.SetFont(u8g2.font_opposansm12_chinese)
+    u8g2.DrawUTF8("画圆测试:", 30, 24)
+    u8g2.DrawCircle(30,50,10,15)
+    u8g2.DrawDisc(90,50,10,15)
+    u8g2.SendBuffer()
+
+    sys.wait(1000)
+    u8g2.ClearBuffer()
+    u8g2.SetFont(u8g2.font_opposansm12_chinese)
+    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.SetFont(u8g2.font_opposansm12_chinese)
+    u8g2.DrawUTF8("方框测试:", 30, 24)
+    u8g2.DrawBox(30,40,30,24)
+    u8g2.DrawFrame(90,40,30,24)
+    u8g2.SendBuffer()
+
+    sys.wait(1000)
+    u8g2.ClearBuffer()
+    u8g2.SetFont(u8g2.font_opposansm12_chinese)
+    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.SetFont(u8g2.font_opposansm12_chinese)
+    u8g2.DrawUTF8("符号测试:", 30, 24)
+    u8g2.DrawUTF8("显示雪人", 30, 38)
+    u8g2.SetFont(u8g2.font_unifont_t_symbols)
+    u8g2.DrawGlyph( 50, 60, 0x2603 )
+    u8g2.SendBuffer()
+
+    sys.wait(1000)
+    u8g2.ClearBuffer()
+    u8g2.SetFont(u8g2.font_opposansm12_chinese)
+    u8g2.DrawUTF8("三角测试:", 30, 24)
+    u8g2.DrawTriangle(30,60, 60,30, 90,60)
+    u8g2.SendBuffer()
+
+    sys.wait(3000)
+    u8g2.close()
+    while true do
+        sys.wait(1000)
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!