本帖最后由 cxzs1234 于 2021-12-31 15:44 编辑
第一次知道Lua是有个朋友给钱让我编个软件外挂,但是我不会玩游戏也不会Lua,就拒绝了,而且那时候正学习Python呢,不想半途而费。知道公司用到合宙的724模组,我的领导用Lua开发的程序,而且很快的就完成了程序的开发,这时候也就想了解下Lua,刚好有这个活动给我,真的很幸运。接下来就是软件程序的编写,第一次编写Lua,边学边进步吧。
首先就是再B站跟这个大佬学习Lua教程,一集不拉的看了2遍,基本了解了Lua的语法。
在VSCode中建立工程,默认会生成一个main.lua,里面建立了一个打印任务,一切从这里开始。
在这里添加的第一行代码是 ril.request("AT+RNDISCALL=0,1")
意思就是防止电脑通过 开发板联网,开发板上集成的流量真的不多。
关于LCD显示部分,参考了screen-cover,也就是拿到手时的例程,将其中的初始化程序修改如下,这样在main.lua中调用就可以完成初始化,里面调用的函数也做了以下说明。
- --初始化LCD参数 驱动IC ST7789
- function LCDInitial()
- local para =
- {
- width = 240, --宽度240像素
- height = 240, --高度240像素
- bpp = 16, --位深:16位
- bus = disp.BUS_SPI4LINE, --LCD专用SPI引脚接口,不可修改
- xoffset = 0, --X轴偏移
- yoffset = 0, --Y轴偏移
- freq = 50000000, --spi时钟频率,支持110K到13M(即110000到13000000)之间的整数(包含110000和13000000)
- pinrst = pio.P0_6, --reset,复位引脚
- pinrs = pio.P0_1, --rs,命令/数据选择引脚/268开发板为15
- --初始化命令
- --前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
- --延时类型:后两个字节表示延时时间(单位毫秒)
- --命令类型:后两个字节命令的值
- --数据类型:后两个字节数据的值
- initcmd =
- {
- 0x00010000 + 60,
- 0x00020011,
- 0x00020036,
- 0x00030000,--横屏控制 用盖板要用60 直接接屏用00
- 0x0002003A,
- 0x00030005,
- 0x000200B2,
- 0x0003000C,
- 0x0003000C,
- 0x00030000,
- 0x00030033,
- 0x00030033,
- 0x000200B7,
- 0x00030035,
- 0x000200BB,
- 0x00030032,
- 0x000200C2,
- 0x00030001,
- 0x000200C3,
- 0x00030015,
- 0x000200C4,
- 0x00030020,
- 0x000200C6,
- 0x0003000F,
- 0x000200D0,
- 0x000300A4,
- 0x000300A1,
- 0x000200E0,
- 0x000300D0,
- 0x00030008,
- 0x0003000E,
- 0x00030009,
- 0x00030009,
- 0x00030005,
- 0x00030031,
- 0x00030033,
- 0x00030048,
- 0x00030017,
- 0x00030014,
- 0x00030015,
- 0x00030031,
- 0x00030034,
- 0x000200E1,
- 0x000300D0,
- 0x00030008,
- 0x0003000E,
- 0x00030009,
- 0x00030009,
- 0x00030015,
- 0x00030031,
- 0x00030033,
- 0x00030048,
- 0x00030017,
- 0x00030014,
- 0x00030015,
- 0x00030031,
- 0x00030034,
- 0x00020021,
- 0x00020029,
- },
- --休眠命令
- sleepcmd = {
- 0x00020010,
- },
- --唤醒命令
- wakecmd = {
- 0x00020011,
- }
- }
- pmd.ldoset(15,pmd.LDO_VLCD)--控制SPI引脚的电压域 一旦设置,受该电压域控制的所有GPIO的高电平与设置的电压等级一致
- disp.init(para) --初始化LCD
- disp.setbkcolor(0)--设置背景颜色为黑色
- disp.clear()--清屏
- disp.update()--更新显示数据
- BL = pins.setup(4,0)--将GPIO4设置为输出 返回设置电平的闭包
- BL(1) --设置电平为高电平 也就是点亮背光灯
- end
复制代码
在main.lua中对LCD进行初始化,屏幕显示出了想要的字符。其实这个过程还是比较曲折的,我以为require "disp",调用的是LuatOS中介绍的disp 显示屏控制方面的内容,尝试调用disp.drawStr()就可以显示文字了,后来发现根本不是一个文件,想要显示需要disp.puttext()。至此感觉wiki.luatos.com有些内容过时了,或者没有更新到?至于调用什么地方的disp.lua,不知道怎么去查找,希望官方能够从lib架构介绍以下。
- sys.taskInit(
- function()
- LCDInitial() -- 初始化液晶屏
- disp.setfontheight(32)
- disp.setcolor(12354)
- disp.puttext("hello",40,20)
- disp.update()--更新显示数据
- sys.wait(10000)--延时10S
- end)
复制代码
总结,使用lua编写程序很简单,我们很容易很快的完成想要的功能,希望合宙再这方面走的更远。
|