基于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)