合宙Air105|摄像头|capture|SPI|二维码识别|TFTLCD| ST7789V/ST7735V| RGB及灰度|反显|官方demo|学习(2-3):摄像头camera:RGB及灰度二维码

基于Air105开发板:Air105 - LuatOS 文档

上手:开发上手 - LuatOS 文档

前文:

合宙Air105|摄像头|capture|SPI|Serial 串口|TFTLCD|Micro SD卡|GC032A|USB转TTL|官方demo|学习(2-1):摄像头camera-capture_Medlar_CN的博客

探讨重点

Lcd初始化代码,rgb及灰度输出的区别、适配及参数调整

Tips:LCD、RGB和灰度

LCD是英文Liquid Crystal Display的简称,指的是液晶显示屏。它属于平面显示器的一种,用于电视机及计算机的屏幕显示。该显示屏的优点是耗电量低、体积小、辐射低。

RGB和灰度是两种不同的图像表示方法。RGB是一种彩色图像表示方法,它使用红、绿、蓝三个通道来表示颜色。而灰度图像只有一种通道,即灰度值,用于表示像素的亮度。

1、LCD初始化

spi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,48*1000*1000,spi.MSB,1,1)
-- log.info("lcd.init",
-- lcd.init("st7735s",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
log.info("lcd.init",
lcd.init("st7789",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
-- log.info("lcd.init",
-- lcd.init("st7735",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 128,h = 160,xoffset = 2,yoffset = 1},spi_lcd))
-- log.info("lcd.init",
-- lcd.init("gc9306x",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))

若LCD芯片型号为:ST7789V/ST775V,需要关闭反显命令:

lcd.invoff()

查数据手册,可知:0x21控制该功能,

 luat_lib_lcd.c 相关命令:lcd.cmd(0x21)

2、RGB输出

代码分析

rgb输出模式下,zbar_scan可采用默认值0,即rgb输出时不能同时使用扫码功能。

  pwm_period  可由12*1000*1000 提高至:24*1000*1000, 

rgb输出模式下,zbar_scan可采用默认值0,即rgb输出时不能同时使用扫码功能。
  pwm_period  可由12*1000*1000 提高至:24*1000*1000,  
--GC032A输出rgb图像初始化命令
local GC032A_InitReg =
{
 --zbar_scan =0,--是否为扫码,rgb 输出不能使用扫码功能
    draw_lcd = 1,--是否向lcd输出
    i2c_id = 0,
    i2c_addr = 0x21,
    pwm_id = 5;
    pwm_period  = 24*1000*1000, 
    pwm_pulse = 0,
    sensor_width = 640,
    sensor_height = 480,
    color_bit = 16,
    init_cmd ="/luadb/GC032A_InitReg.txt"--此方法将初始化指令写在外部文件,支持使用 # 进行注释
}

3、灰度输出(二维码识别)

代码分析

采用官方api,灰度输出必需打开扫码功能。

--GC032A输出灰度图像初始化命令
local GC032A_InitReg_Gray =
{
    zbar_scan = 1,--是否为扫码,灰度输出必需打开扫码功能
    draw_lcd = 1,--是否向lcd输出
    i2c_id = 0,
    i2c_addr = 0x21,
    pwm_id = 5;
    pwm_period  = 24*1000*1000,
    pwm_pulse = 0,
    sensor_width = 640,
    sensor_height = 480,
    color_bit = 16,
    init_cmd ="/luadb/GC032A_InitReg_Gray.txt"--此方法将初始化指令写在外部文件,支持使用 # 进行注释
}

4、注册摄像头事件回调

str为二维码识别结果

camera.on(0, "scanned", function(id, str)
 if type(str) == 'string' then
        log.info("扫码结果", str)
 else
        log.info("拍照结果", str)
 end
end)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打酱油的工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值