main.lua 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "lvgl_demo_test"
  3. VERSION = "1.0.0"
  4. log.info("main", PROJECT, VERSION)
  5. _G.symbol = require "symbol"
  6. --添加硬狗防止程序卡死
  7. if wdt then
  8. wdt.init(9000)--初始化watchdog设置为9s
  9. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  10. end
  11. local lcd_use_buff = false -- 是否使用缓冲模式, 提升绘图效率,占用更大内存
  12. local rtos_bsp = rtos.bsp()
  13. local chip_type = hmeta.chip()
  14. -- 根据不同的BSP返回不同的值
  15. -- spi_id,pin_reset,pin_dc,pin_cs,bl
  16. function lcd_pin()
  17. if string.find(rtos_bsp,"Air8101") then
  18. lcd_use_buff = true -- RGB仅支持buff缓冲模式
  19. return lcd.RGB,36,0xff,0xff,25
  20. else
  21. log.info("main", "bsp not support")
  22. return
  23. end
  24. end
  25. local spi_id,pin_reset,pin_dc,pin_cs,bl = lcd_pin()
  26. if spi_id ~= lcd.HWID_0 and spi_id ~= lcd.RGB then
  27. spi_lcd = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,0)
  28. port = "device"
  29. else
  30. port = spi_id
  31. end
  32. if spi_id == lcd.RGB then
  33. -- -- Air8101开发板配套LCD屏幕 分辨率800*480
  34. -- lcd.init("h050iwv",
  35. -- {port = port, pin_dc = 0xff, pin_pwr = bl, pin_rst = pin_reset,
  36. -- direction = 0, w = 800, h = 480, xoffset = 0, yoffset = 0})
  37. -- -- Air8101开发板配套LCD屏幕 分辨率1024*600
  38. -- lcd.init("hx8282",
  39. -- {port = port,pin_pwr = bl, pin_rst = pin_reset,
  40. -- direction = 0,w = 1024,h = 600,xoffset = 0,yoffset = 0})
  41. -- Air8101开发板配套LCD屏幕 分辨率720*1280
  42. lcd.init("nv3052c",
  43. {port = port,pin_pwr = bl, pin_rst = pin_reset,
  44. direction = 0,w = 720,h = 1280,xoffset = 0,yoffset = 0})
  45. -- -- Air8101开发板配套LCD屏幕 分辨率480*854
  46. -- lcd.init("st7701sn",
  47. -- {port = port,pin_pwr = bl, pin_rst = pin_reset,
  48. -- direction = 0,w = 480,h = 854,xoffset = 0,yoffset = 0})
  49. end
  50. -- LVGL(Light and Versatile Graphics Library)的各种 UI 组件(Widgets)的演示模块。
  51. -- 以下是每个模块对应的 LVGL 组件及其用途:
  52. -- 模块名 LVGL 组件 功能描述
  53. -- arc_demo 圆弧 (Arc) 用于显示进度或旋钮控制(如音量调节)。
  54. -- bar_demo 进度条 (Bar) 水平/垂直进度条,展示加载或数值范围。
  55. -- btn_demo 按钮 (Button) 基础点击交互按钮。
  56. -- btnmatrix_demo 按钮矩阵 (Button Matrix) 网格状排列的多个按钮(如键盘布局)。
  57. -- calendar_demo 日历 (Calendar) 日期选择组件。
  58. -- canvas_demo 画布 (Canvas) 自定义绘制图形/图像的低级绘图接口。
  59. -- checkbox_demo 复选框 (Checkbox) 二元选择框(勾选/未勾选)。
  60. -- chart_demo 图表 (Chart) 显示折线图、柱状图等数据可视化。
  61. -- cont_demo 容器 (Container) 布局容器,用于自动排列子组件。
  62. -- cpicker_demo 颜色选择器 (Color Picker) 允许用户选择颜色值。
  63. -- dropdown_demo 下拉菜单 (Dropdown) 点击后展开选项列表的选择组件。
  64. -- gauge_demo 仪表盘 (Gauge) 模拟仪表(如速度表、温度计)。
  65. -- img_demo 图像 (Image) 显示位图或图标。
  66. -- imgbtn_demo 图像按钮 (Image Button) 使用图片作为按钮的交互元素。
  67. -- label_demo 标签 (Label) 显示静态或动态文本。
  68. -- led_demo LED 指示灯 (LED) 模拟 LED 灯的开关状态指示。
  69. -- line_demo 线条 (Line) 绘制直线图形。
  70. -- list_demo 列表 (List) 垂直/水平滚动列表容器。
  71. -- lmeter_demo 线性量表 (Line Meter) 线性比例指示器(如电池电量条)。
  72. -- msdbox_demo 消息框 (Message Box) 弹出对话框显示提示信息(确认/取消)。
  73. -- objmask_demo 对象遮罩 (Object Mask) 对组件应用遮罩效果(裁剪/透明)。
  74. -- page_demo 页面 (Page) 可滚动的容器,用于管理复杂布局。
  75. -- roller_demo 滚轮 (Roller) 滚动选择器(如时间选择)。
  76. -- slider_demo 滑块 (Slider) 拖动滑块选择数值范围。
  77. -- spinbox_demo 数字输入框 (Spinbox) 带加减按钮的数字输入控件。
  78. -- spinner_demo 加载动画 (Spinner) 旋转指示器,表示加载中状态。
  79. -- switch_demo 开关 (Switch) 切换开关(如 ON/OFF 状态)。
  80. -- table_demo 表格 (Table) 显示行列数据(类似电子表格)。
  81. -- tabview_demo 标签页 (Tab View) 多标签页容器,切换不同内容视图。
  82. -- textarea_demo 文本域 (Text Area) 多行文本输入框(支持编辑)。
  83. -- tileview_demo 平铺视图 (Tile View) 滑动平铺页面(如手机主屏幕)。
  84. -- win_demo 窗口 (Window) 带标题栏和内容区域的窗口容器。
  85. local arc = require "arc_demo"
  86. local bar = require "bar_demo"
  87. local btn = require "btn_demo"
  88. local btnmatrix = require "btnmatrix_demo"
  89. local calendar = require "calendar_demo"
  90. local canvas = require "canvas_demo"
  91. local checkbox = require "checkbox_demo"
  92. local chart = require "chart_demo"
  93. local cont = require "cont_demo"
  94. local cpicker = require "cpicker_demo"
  95. local dropdown = require "dropdown_demo"
  96. local gauge = require "gauge_demo"
  97. local img = require "img_demo"
  98. local imgbtn = require "imgbtn_demo"
  99. local label = require "label_demo"
  100. local led = require "led_demo"
  101. local line = require "line_demo"
  102. local list = require "list_demo"
  103. local lmeter = require "lmeter_demo"
  104. local msdbox = require "msdbox_demo"
  105. local objmask = require "objmask_demo"
  106. local page = require "page_demo"
  107. local roller = require "roller_demo"
  108. local slider = require "slider_demo"
  109. local spinbox = require "spinbox_demo"
  110. local spinner = require "spinner_demo"
  111. local switch = require "switch_demo"
  112. local table = require "table_demo"
  113. local tabview = require "tabview_demo"
  114. local textarea = require "textarea"
  115. local tileview = require "tileview_demo"
  116. local win = require "win_demo"
  117. sys.taskInit(function ()
  118. -- 开启缓冲区, 刷屏速度回加快, 但也消耗2倍屏幕分辨率的内存
  119. if lcd_use_buff then
  120. lcd.setupBuff(nil, true) -- 使用sys内存, 只需要选一种
  121. -- lcd.setupBuff() -- 使用lua内存, 只需要选一种
  122. lcd.autoFlush(false)
  123. end
  124. -- sys.wait(5000)
  125. log.info("lvgl", lvgl.init())
  126. if tp then
  127. softI2C = i2c.createSoft(8, 5)
  128. tp_device = tp.init("gt911",{port=softI2C,pin_rst = 9,pin_int = 6,w = 720,h = 1280})
  129. lvgl.indev_drv_register("pointer", "touch", tp_device)
  130. end
  131. -- arc.demo1()
  132. -- arc.demo2()
  133. -- bar.demo()
  134. -- btn.demo1()
  135. -- btn.demo2()
  136. -- btnmatrix.demo()
  137. -- calendar.demo()
  138. -- canvas.demo()
  139. -- checkbox.demo()
  140. -- chart.demo1()
  141. -- chart.demo2()
  142. -- cont.demo()
  143. -- cpicker.demo()
  144. -- dropdown.demo1()
  145. -- dropdown.demo2()
  146. -- gauge.demo1()
  147. -- img.demo()
  148. -- imgbtn.demo()
  149. -- label.demo()
  150. -- led.demo()
  151. -- line.demo()
  152. -- list.demo()
  153. -- lmeter.demo()
  154. -- msdbox.demo()
  155. -- objmask.demo()
  156. -- page.demo()
  157. -- roller.demo()
  158. -- slider.demo()
  159. -- spinbox.demo()
  160. -- spinner.demo()
  161. -- switch.demo()
  162. -- table.demo()
  163. -- tabview.demo()
  164. -- textarea.demo()
  165. -- tileview.demo()
  166. win.demo()
  167. while true do
  168. sys.wait(1000)
  169. end
  170. end)
  171. sys.run()