xuxinyi 3 ヶ月 前
コミット
c95e3db56e
5 ファイル変更171 行追加5 行削除
  1. 2 2
      drv_periph/radio.lua
  2. 2 2
      drv_periph/sx126x_driver.lua
  3. 89 0
      lcd/ILI9341.lua
  4. 77 0
      lcd/lcd.lua
  5. 1 1
      main.lua

+ 2 - 2
drv_periph/radio.lua

@@ -30,8 +30,8 @@ sys.taskInit(function()
     sx126x_driver.RadioRx(0)
     while true do
         -- RadioStandby()
-        local string111  =  "1234567891011121314151617181920212223242526272830313233343536!\n"
-        sx126x_driver.sentString(string111)
+        -- local string111  =  "12345678910111213141516171819202122232425262728!\n"
+        -- sx126x_driver.sentString(string111)
         -- log.info("Radio", "测试接收数据中。。。")
         -- sx126x_driver.RadioRx(0)
         -- sx126x_driver.SX126xWakeup()

+ 2 - 2
drv_periph/sx126x_driver.lua

@@ -78,8 +78,8 @@ function gpio4IntFnc(msg)
     log.info("testGpioSingle.gpio4IntFnc",msg,getGpio4Fnc())
     --上升沿中断
     if msg==cpu.INT_GPIO_POSEDGE then
-        -- sys.publish("LORA_CALL_BACK")
-        -- log.info("我是中断")
+        sys.publish("LORA_CALL_BACK")
+        log.info("我是中断")
     --下降沿中断
     else
     end

+ 89 - 0
lcd/ILI9341.lua

@@ -0,0 +1,89 @@
+--- 模块功能:ILI 9341驱动芯片LCD命令配置
+-- @author openLuat
+-- @module ui.color_lcd_spi_ili9341
+-- @license MIT
+-- @copyright openLuat
+-- @release 2018.03.27
+--[[
+注意:disp库目前支持I2C接口和SPI接口的屏,此文件的配置,硬件上使用的是LCD专用的SPI引脚,不是标准的SPI引脚
+硬件连线图如下:
+Air模块			LCD
+GND-------------地
+LCD_CS----------片选
+LCD_CLK---------时钟
+LCD_DATA--------数据
+LCD_DC----------数据/命令选择
+VDDIO-----------电源
+LCD_RST---------复位
+]] 
+module(..., package.seeall)
+
+--[[
+函数名:init
+功能  :初始化LCD参数
+参数  :无
+返回值:无
+]]
+function init(data)
+    if data == 0 then
+        data = 0x0003006C -- 0x000300BC
+    else
+        data = 0x000300BC
+    end
+    local para = {
+        width = 320, -- 分辨率宽度,128像素;用户根据屏的参数自行修改
+        height = 240, -- 分辨率高度,160像素;用户根据屏的参数自行修改
+        bpp = 16, -- 位深度,彩屏仅支持16位
+        bus = disp.BUS_SPI4LINE, -- LCD专用SPI引脚接口,不可修改
+        xoffset = 0, -- X轴偏移
+        yoffset = 0, -- Y轴偏移
+        freq = 13000000, -- spi时钟频率,支持110K到13M(即110000到13000000)之间的整数(包含110000和13000000)
+        pinrst = pio.P0_6, -- reset,复位引脚
+        pinrs = pio.P0_1, -- rs,命令/数据选择引脚
+        -- 初始化命令
+        -- 前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
+        -- 延时类型:后两个字节表示延时时间(单位毫秒)
+        -- 命令类型:后两个字节命令的值
+        -- 数据类型:后两个字节数据的值
+        initcmd = {
+            0x11, 0x00010078, 0xCA, 0x000300C3, 0x00030008, 0x00030050, 0xEF,
+            0x00030003, 0x00030080, 0x00030002, 0xCF, 0x00030000,
+            -- 0x00030099,
+            0x000300c1, 0x00030030, 0xED, 0x00030064, 0x00030003, 0x00030012,
+            0x00030081, 0xCB, 0x00030039, 0x0003002C, 0x00030000, 0x00030034,
+            0x00030002, 0x00010020, 0xEA, 0x00030000, 0x00030000, 0xE8,
+            0x00030085, 0x00030000, 0x00030078, 0xC0, 0x00030023, 0xC1,
+            0x00030012, 0xC2, 0x00030011, 0xC5, 0x00030040, 0x00030030, 0xC7,
+            0x000300A9, 0x3A, 0x00030055, 0x36, -- 显示方向
+            data, -- 0x000300BC 摄像头
+            0xB1, 0x00030000, 0x00030018, 0xB6, --
+            0x0003000A, 0x000300A2, 0xF2, 0x00030000, 0xF7, 0x00030020, 0x26,
+            0x00030001, 0xE0, 0x0003001F, 0x00030024, 0x00030023, 0x0003000B,
+            0x0003000F, 0x00030008, 0x00030050, 0x000300D8, 0x0003003B,
+            0x00030008, 0x0003000A, 0x00030000, 0x00030000, 0x00030000,
+            0x00030000, 0xE1, 0x00030000, 0x0003001B, 0x0003001C, 0x00030004,
+            0x00030010, 0x00030007, 0x0003002F, 0x00030027, 0x00030044,
+            0x00030007, 0x00030015, 0x0003000F, 0x0003003F, 0x0003003F,
+            0x0003001F, 0x29
+        },
+        -- 休眠命令
+        sleepcmd = {0x10},
+        -- 唤醒命令
+        wakecmd = {0x11}
+    }
+    print("初始化LCD")
+    disp.init(para)
+    disp.clear()
+    disp.update()
+    print("初始化LCD完成")
+
+end
+
+-- 控制SPI引脚的电压域
+pmd.ldoset(15, pmd.LDO_VLCD)
+init(0)
+-- Screen.PowerOn_Screen()
+-- 打开背光
+-- 实际使用时,用户根据自己的lcd背光控制方式,添加背光控制代码
+-- GPIO14,用来控制LCD的背光
+

+ 77 - 0
lcd/lcd.lua

@@ -0,0 +1,77 @@
+--- 模块功能:LCD适配
+require "ILI9341"
+
+
+module(..., package.seeall)
+
+-- 设置字体大小
+disp.setfontheight(32)
+
+-- LCD分辨率的宽度和高度(单位是像素)
+WIDTH, HEIGHT, BPP = disp.getlcdinfo()
+-- 1个ASCII字符宽度为8像素,高度为16像素;汉字宽度和高度都为16像素
+CHAR_WIDTH = 16
+
+--[[
+函数名:getxpos
+功能  :计算字符串居中显示的X坐标
+参数  :
+str:string类型,要显示的字符串
+返回值:X坐标
+]]
+function getxpos(str)
+    return (WIDTH - string.len(str) * CHAR_WIDTH) / 2
+end
+
+function setcolor(color)
+    if BPP ~= 1 then
+        return disp.setcolor(color)
+    end
+end
+
+function SetBackPin()
+    pmd.ldoset(15, pmd.LDO_VLCD)
+    setOutputFnc = pins.setup(pio.P0_19, 0)
+    setOutputFnc(1)
+end
+SetBackPin()
+sys.timerStart(SetBackPin, 100) -- 开机启动背光
+
+-- SetLedPin()
+-- sys.timerStart(SetLedPin, 100) -- 开机启动背光
+sys.taskInit(function()
+    -- 定义照片文件路径列表
+    local photo_list = {
+        "/lua/Calling.jpg",
+        "/lua/PowerOn.jpg",
+        "/lua/PutInSerNum.jpg",
+        -- 你可以根据需要添加更多照片路径
+    }
+    local photo_index = 1
+    
+    while true do
+        disp.clear()
+        print("显示照片")
+        -- 获取当前要显示的照片路径
+        local photo_path = photo_list[photo_index]
+        if photo_path then
+            disp.putimage(photo_path, 0, 0)
+        else
+            print("未找到对应的照片路径")
+        end
+        -- 更新显示窗口
+        getxpos("Hello World ----------------------------")
+        disp.update()
+        print("照片显示完成")
+        -- 切换到下一张照片
+        photo_index = photo_index + 1
+        if photo_index > #photo_list then
+            photo_index = 1
+        end
+        -- 等待 10 秒
+        sys.wait(10000)
+    end
+end)
+
+
+

+ 1 - 1
main.lua

@@ -68,7 +68,7 @@ errDump.request("udp://dev_msg1.openluat.com:12425", nil, true)
 require "radio"
 require "Air530zGPS"
 require "mqttTask"
-
+-- require "lcd" 
 --启动系统框架
 sys.init(0, 0)
 sys.run()