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

update:移除原来Air8101 LCD演示demo

江访 1 месяц назад
Родитель
Сommit
cf8f086b5d

+ 0 - 95
module/Air8101/demo/accessory_board/AirLCD_1020/lcd/AirLCD_1020.lua

@@ -1,95 +0,0 @@
-local AirLCD_1020 = 
-{
-    -- i2c_soft_device = , --触摸面板使用的软件I2C对象,必须使用全局变量存储,不能使用local类型的局部变量
-    -- tp_device = , --触摸面板设备
-}
-
---AirLCD_1020显示屏的分辨率为800*480
-local WIDTH, HEIGHT = 800, 480
-
-
---初始化AirLCD_1020的LCD配置
-
---返回值:nil
-function AirLCD_1020.init_lcd()
-    -- st7265
-    lcd.init("custom",
-        {port = lcd.RGB, hbp = 8, hspw = 4, hfp = 8, vbp = 16, vspw = 4, vfp = 16,
-        bus_speed = 30*1000*1000, direction = 0, w = WIDTH, h = HEIGHT, xoffset = 0, yoffset = 0})
-end
-
---关闭AirLCD_1020的LCD
-
---返回值:nil
-function AirLCD_1020.close_lcd()
-    lcd.close()
-end
-
-
---初始化AirLCD_1020的TP配置
---无论使用硬件i2c还是软件io模拟i2c,都是传入引脚的GPIO ID
-
---int:number类型;
---     表示中断引脚GPIO ID;
---     取值范围:主控产品(例如Air8101)上有效的GPIO ID值;
---     如果没有传入此参数或者传入了nil,则使用默认值7;
---rst:number类型;
---     表示复位控制引脚GPIO ID;
---     取值范围:主控产品(例如Air8101)上有效的GPIO ID值;
---     如果没有传入此参数或者传入了nil,则使用默认值28;
---sda:number类型;
---     表示数据引脚GPIO ID;
---     取值范围:主控产品(例如Air8101)上有效的GPIO ID值;
---     如果没有传入此参数或者传入了nil,则使用默认值1;
---scl:number类型;
---     表示时钟引脚脚GPIO ID;
---     取值范围:主控产品(例如Air8101)上有效的GPIO ID值;
---     如果没有传入此参数或者传入了nil,则使用默认值0;
---cb: function类型;
---     表示触摸事件的回调函数,回调函数的定义格式如下:
---     function cb_func(tp_device, tp_data)
---         --tp_device:产生触摸事件的触摸设备,和AirLCD_1020.init_tp函数的返回值一致
---         --tp_data:触摸事件的数据结构
---                  tp_data[1].event:触摸事件,number类型,tp.EVENT_DOWN(按下事件,值为1),tp.EVENT_UP(弹起事件,值为2),tp.EVENT_MOVE(移动事件,值为3)
---                  tp_data[1].x:触摸的x坐标,number类型
---                  tp_data[1].y:触摸的y坐标,number类型
---                  tp_data[1].timestamp:触摸时的系统tick数;每秒钟包含的tick数量可以通过mcu.hz()获取,例如Air8101上,每秒的tick数量是500
---     end
---     允许为空,没有默认值;
-
---返回值:成功返回触摸设备对象(非nil),失败返回nil
-function AirLCD_1020.init_tp(int, rst, sda, scl, cb)
-    AirLCD_1020.i2c_soft_device = i2c.createSoft(scl or 0, sda or 1)  
-
-    AirLCD_1020.tp_device = tp.init("gt911",{port=AirLCD_1020.i2c_soft_device, pin_rst = rst or 28, pin_int = int or 7, w = WIDTH, h = HEIGHT}, cb)
-
-    return AirLCD_1020.tp_device
-end
-
-
---打开AirLCD_1020的背光
-
---gpio_id:number类型;
---         表示控制LCD背光的GPIO ID;
---         取值范围:主控产品(例如Air8101)上有效的GPIO ID值;
---         如果没有传入此参数或者传入了nil,则使用默认值8;
-
---返回值:nil
-function AirLCD_1020.open_backlight(gpio_id)
-    gpio.setup(gpio_id or 8, 1)
-end
-
---关闭AirLCD_1020的背光
-
---gpio_id:number类型;
---         表示控制LCD背光的GPIO ID;
---         取值范围:主控产品(例如Air8101)上有效的GPIO ID值;
---         如果没有传入此参数或者传入了nil,则使用默认值8;
-
---返回值:nil
-function AirLCD_1020.close_backlight(gpio_id)
-    gpio.setup(gpio_id or 8, 0)
-end
-
-
-return AirLCD_1020

BIN
module/Air8101/demo/accessory_board/AirLCD_1020/lcd/bird.jpg


BIN
module/Air8101/demo/accessory_board/AirLCD_1020/lcd/introduction.jpg


+ 0 - 74
module/Air8101/demo/accessory_board/AirLCD_1020/lcd/lcd_app.lua

@@ -1,74 +0,0 @@
---加载AirLCD_1020驱动文件
-local air_lcd = require "AirLCD_1020"
---TP设备
-local tp_device
-
-
---lcd显示task
---每隔10秒清屏并且全屏刷新显示一张图片
-local function lcd_app_task_func()
-    log.info("lcd_app_task_func enter")
-    -- 开启显示缓冲区, 刷屏速度会加快, 但也消耗2倍屏幕分辨率的内存(2*宽*高 字节)
-    -- 第一个参数无意义,直接填nil即可
-    -- 第二个参数true表示使用sys中的内存
-    lcd.setupBuff(nil, true)
-    --禁止自动刷新
-    --需要刷新时需要主动调用lcd.flush()接口,才能将缓冲区中的数据显示到lcd上
-    lcd.autoFlush(false)
-
-    --每隔10秒清屏并且全屏刷新显示一张图片
-    while true do
-        --清屏
-        lcd.clear()
-        --显示图片
-        lcd.showImage(0, 0, "/luadb/introduction.jpg")
-        --刷屏,将缓冲区中的数据显示到lcd上
-        lcd.flush()
-        --等待10秒钟
-        sys.wait(10000)
-    end
-end
-
-local function tp_callback(tp_device,tp_data)
-    log.info("tp_callback", tp_data[1].event, tp_data[1].x, tp_data[1].y, tp_data[1].timestamp, mcu.hz())
-    sys.publish("TP",tp_device,tp_data)
-end
-
-
---tp处理task
---检测到触摸按下和移动的时间后,以触摸的中心点画一个半径为10的实心圆
-local function tp_app_task_func()
-    while true do
-        --阻塞等待触摸事件
-        local result, tp_device, tp_data = sys.waitUntil("TP")
-        log.info("tp_app_task_func", result)
-        if result then
-            --触摸按下或者移动的事件
-            if tp_data[1].event == tp.EVENT_DOWN or tp_data[1].event == tp.EVENT_MOVE then
-                --以触摸的中心点画一个半径为10的实心圆
-                --lcd.drawCircle设计本身,并不支持画纯粹的实心圆,会有一些点画不到
-                for i=1,10 do
-                    lcd.drawCircle(tp_data[1].x, tp_data[1].y, i, 0xF800)
-                end
-                --刷屏,将缓冲区中的数据显示到lcd上
-                lcd.flush()
-            end
-        end
-    end
-end
-
-
---初始化LCD
-air_lcd.init_lcd()
---初始化TP触摸面板,触摸事件的回调函数为tp_callback
-air_lcd.init_tp(nil, nil, nil, nil, tp_callback)
---打开LCD背光
-air_lcd.open_backlight()
-
---创建并且启动一个task
---task的主函数为lcd_app_task_func
-sys.taskInit(lcd_app_task_func)
---创建并且启动一个task
---task的主函数为tp_app_task_func
-sys.taskInit(tp_app_task_func)
-

+ 0 - 56
module/Air8101/demo/accessory_board/AirLCD_1020/lcd/lcd_jpg_fps.lua

@@ -1,56 +0,0 @@
---加载AirLCD_1020驱动文件
-local air_lcd = require "AirLCD_1020"
-
-
-
---lcd刷屏测试task
---每隔10秒进行一次刷屏测试,日志中输出fps数值(每秒可以全屏刷新显示jpg图片的)
-local function lcd_app_task_func()
-    log.info("lcd_app_task_func enter")
-    -- 开启显示缓冲区, 刷屏速度会加快, 但也消耗2倍屏幕分辨率的内存(2*宽*高 字节)
-    -- 第一个参数无意义,直接填nil即可
-    -- 第二个参数true表示使用sys中的内存
-    lcd.setupBuff(nil, true)
-    --禁止自动刷新
-    --需要刷新时需要主动调用lcd.flush()接口,才能将缓冲区中的数据显示到lcd上
-    lcd.autoFlush(false)
-
-    local begin_tick
-
-    while true do
-        --清屏
-        lcd.clear()        
-
-        log.info("begin_tick", mcu.ticks(), mcu.hz())
-
-        --记录测试开始的系统tick数值
-        begin_tick = mcu.ticks()
-        
-        --循环测试10次,每次全屏刷新显示两张jpg图片
-        for i=1,10 do
-            lcd.showImage(0, 0, "/luadb/introduction.jpg")
-            lcd.flush()
-            lcd.showImage(0, 0, "/luadb/bird.jpg")
-            lcd.flush()
-        end
-
-        --测试结束,计算fps
-        local end_tick = mcu.ticks()
-        lcd.clear() 
-        lcd.drawStr(184,234,"The number of JPG images displayed in full-screen refresh per second: "..math.floor(mcu.hz()/((end_tick-begin_tick)/20)))
-        lcd.flush()
-
-        --等待10秒钟
-        sys.wait(10000)
-    end
-end
-
---初始化LCD
-air_lcd.init_lcd()
---打开LCD背光
-air_lcd.open_backlight()
-
---创建并且启动一个task
---task的主函数为lcd_app_task_func
-sys.taskInit(lcd_app_task_func)
-

+ 0 - 54
module/Air8101/demo/accessory_board/AirLCD_1020/lcd/pins_Air8101.json

@@ -1,54 +0,0 @@
- {
-    " pins" : [
-      //RGB数据引脚24个
-       [42, "RGB_r[0]", "PIN42脚, 做RGB_r[0]用, 用作RGB中R的数据位0"],
-       [40, "RGB_r[1]", "PIN40脚, 做RGB_r[1]用, 用作RGB中R的数据位1"],
-       [43, "RGB_r[2]", "PIN43脚, 做RGB_r[2]用, 用作RGB中R的数据位2"],
-       [39, "RGB_r[3]", "PIN39脚, 做RGB_r[3]用, 用作RGB中R的数据位3"],
-       [44, "RGB_r[4]", "PIN44脚, 做RGB_r[4]用, 用作RGB中R的数据位4"],
-       [38, "RGB_r[5]", "PIN38脚, 做RGB_r[5]用, 用作RGB中R的数据位5"],
-       [45, "RGB_r[6]", "PIN45脚, 做RGB_r[0]用, 用作RGB中R的数据位6"],
-       [37, "RGB_r[7]", "PIN37脚, 做RGB_r[0]用, 用作RGB中R的数据位7"],
-
-       [46, "RGB_g[0]", "PIN46脚, 做RGB_g[0]用, 用作RGB中G的数据位0"],
-       [36, "RGB_g[1]", "PIN36脚, 做RGB_g[1]用, 用作RGB中G的数据位1"],
-       [47, "RGB_g[2]", "PIN47脚, 做RGB_g[2]用, 用作RGB中G的数据位2"],
-       [35, "RGB_g[3]", "PIN35脚, 做RGB_g[3]用, 用作RGB中G的数据位3"],
-       [48, "RGB_g[4]", "PIN48脚, 做RGB_g[4]用, 用作RGB中G的数据位4"],
-       [34, "RGB_g[5]", "PIN34脚, 做RGB_g[5]用, 用作RGB中G的数据位5"],
-       [49, "RGB_g[6]", "PIN49脚, 做RGB_g[0]用, 用作RGB中G的数据位6"],
-       [33, "RGB_g[7]", "PIN33脚, 做RGB_g[0]用, 用作RGB中G的数据位7"],
-
-       [50, "RGB_b[0]", "PIN50脚, 做RGB_b[0]用, 用作RGB中B的数据位0"],
-       [32, "RGB_b[1]", "PIN32脚, 做RGB_b[1]用, 用作RGB中B的数据位1"],
-       [51, "RGB_b[2]", "PIN51脚, 做RGB_b[2]用, 用作RGB中B的数据位2"],
-       [31, "RGB_b[3]", "PIN31脚, 做RGB_b[3]用, 用作RGB中B的数据位3"],
-       [52, "RGB_b[4]", "PIN52脚, 做RGB_b[4]用, 用作RGB中B的数据位4"],
-       [30, "RGB_b[5]", "PIN30脚, 做RGB_b[5]用, 用作RGB中B的数据位5"],
-       [53, "RGB_b[6]", "PIN53脚, 做RGB_b[0]用, 用作RGB中B的数据位6"],
-       [29, "RGB_b[7]", "PIN29脚, 做RGB_b[0]用, 用作RGB中B的数据位7"],
-
-       //RGB控制引脚5个
-       [28, "RGB_dclk", "PIN28脚, 做RGB_dclk用, 用作RGB中的同步时钟信号"],
-       [54, "RGB_disp", "PIN54脚, 做RGB_disp用, 用作RGB中的待机模式选择功能"],
-       [55, "RGB_hsync", "PIN55脚, 做RGB_hsync用, 用作RGB中的行同步信号"],
-       [56, "RGB_vsync", "PIN56脚, 做RGB_vsync用, 用作RGB中的列同步信号"],
-       [57, "RGB_de", "PIN57脚, 做RGB_de用, 用作RGB中的数据有效使能信号"],
-
-       //LCD控制引脚5个
-       [14, "GPIO8", "PIN14脚, 做GPIO8用, 用作LCD背光控制"],
-       //下面四个引脚在AirLCD_1020上用不到
-      //  [13, "GPIO9", "PIN13脚, 做GPIO9用, 用作LCD复位控制"],
-      //  [8, "GPIO5", "PIN8脚, 做GPIO5用, 用作LCD数据输入"],
-      //  [9, "GPIO6", "PIN9脚, 做GPIO6用, 用作LCD时钟信号"],
-      //  [68, "GPIO12", "PIN68脚, 做GPIO12用, 用作LCD片选控制"],
-
-
-       //TP控制引脚4个
-       [9, "GPIO6", "PIN9脚, 做GPIO6用, 用作TP RST控制"],
-       [10, "GPIO7", "PIN10脚, 做GPIO7用, 用作TP INT控制"],
-       [12, "GPIO0", "PIN12脚, 做GPIO0用, 用作IO模拟TP I2C时钟信号"],
-       [11, "GPIO1", "PIN11脚, 做GPIO1用, 用作IO模拟TP I2C数据信号"],
-
-    ]
- }