Luat模块应用手册-指南-luat二次开发教程-功能开发教程-camera

关键词:camera,摄像头

camera

简介

Air724UG支持一路摄像头接口。可以用于扫码,拍照应用,
特点如下:

  • 只支持SPI接口
  • 最高像素30W像素@15fps
  • 支持数据格式YUV422, Y420, RAW8, RAW10
  • 集成GC0310驱动

API说明

camera的API在luat lib有做封装,建议直接用lib的API接口。

API接口描述
disp.cameraopen()打开摄像头
disp.camerapreview()打开摄像头预览
disp.camerapreviewzoom()预览缩放
disp.camerapreviewrotation()预览旋转
disp.camerapreviewclose()关闭预览
disp.cameracapture()拍照片
disp.camerasavephoto()保存拍摄的照片到文件
disp.camerawritereg()设置camera sensor寄存器
disp.cameraclose()关闭摄像头
disp.cameraopen_extLUA外部配置camera功能

更多详细api介绍

示例

本文介绍如何用Air724开发板,和PC端搭建一个camera功能演示。

材料准备

  1. EVB_Air724UG_A13开发板一套,包括天线SIM卡,USB线。
  2. PC电脑,摄像头(集成GC0310驱动)
    3.TFT_LCD显示屏st7735 ,像素128X160
  3. luat开发环境:环境搭建方法
    图片.png

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Q1gbrOz-1624852160204)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210416203840123_微信图片_20210416203804.jpg “undefined”)]

步骤

本文以demo\camera这个DEMO为例做演示。
1.获取显示屏长和宽,并定义一个扫码结果回调函数

local WIDTH,HEIGHT = disp.getlcdinfo()
local DEFAULT_WIDTH,DEFAULT_HEIGHT = 320,240

-- 扫码结果回调函数
-- @bool result,true或者false,true表示扫码成功,false表示超时失败
-- @string[opt=nil] codeType,result为true时,表示扫码类型;result为false时,为nil;支持QR-Code和CODE-128两种类型
-- @string[opt=nil] codeStr,result为true时,表示扫码结果的字符串;result为false时,为nil
local function scanCodeCb(result,codeType,codeStr)
    --关闭摄像头预览
    disp.camerapreviewclose()
    --关闭摄像头
    disp.cameraclose()
    --允许系统休眠
    pm.sleep("testScanCode")
    --500毫秒后处理扫描结果
    sys.timerStart(function()
        --如果有LCD,显示扫描结果
        if WIDTH~=0 and HEIGHT~=0 then 
            disp.clear()
            if result then
                disp.puttext(common.utf8ToGb2312("扫描成功"),0,5)
                disp.puttext(common.utf8ToGb2312("类型: ")..codeType,0,35)
                log.info("scanCodeCb",codeStr:toHex())
                disp.puttext(common.utf8ToGb2312("结果: ")..codeStr,0,65)                
            else
                disp.puttext(common.utf8ToGb2312("扫描失败"),0,5)                
            end
            disp.update()
        end
    end,500)
    
    sys.timerStart(scan,1000)
end

2.初始化4种摄像头寄存器

--bf302A_sd
--gc0310_sdr
--gc0310_ddr 
--gc6153

local bf302A_sdr =
{
	zbar_scan = 1,
	i2c_addr = 0x6e, 
	sensor_width = 240, 
	sensor_height = 320, 
	id_reg = 0xfd, 
	id_value = 0x02,
	spi_mode = disp.CAMERA_SPI_MODE_LINE1, 
	spi_speed = disp.CAMERA_SPEED_SDR, 
	spi_yuv_out = disp.CAMERA_SPI_OUT_Y1_V0_Y0_U0, 
	
	init_cmd = 
	{
		0xcf,0xb0,--//POWER UP
		0x12,0x40,--//MTK:20 ZX:10 RDA:40
		0x15,0x00,	
		0x6b,0x71,
		0x00,0x40,
		0x04,0x00,	
		0x06,0x26,
		0x08,0x07,
		0x1c,0x12,
		0x20,0x20,
		0x21,0x20,
		0x34,0x02,
		0x35,0x02,	
		0x36,0x21,	
		0x37,0x13,
		0xca,0xf3,	
		0xcb,0x22,
		0xcc,0x89,
		0xcd,0x4c,
		0xce,0x6b,
		0xa0,0x8e,
		0x01,0x1b,
		0x02,0x1d,
		0x13,0x08,
		0x87,0x13,
		0x8b,0x08,
		0x70,0x1f,
		0x71,0x43,	
		0x72,0x0a,
		0x73,0x62,
		0x74,0xa2,
		0x75,0xbf,	
		0x76,0x02,
		0x77,0xcc,
		0x40,0x32,
		0x41,0x28,
		0x42,0x26,
		0x43,0x1d,
		0x44,0x1a,
		0x45,0x14,
		0x46,0x11,
		0x47,0x0f,
		0x48,0x0e,
		0x49,0x0d,
		0x4B,0x0c,
		0x4C,0x0b,
		0x4E,0x0a,
		0x4F,0x09,
		0x50,0x09,
		0x24,0x50,
		0x25,0x36,
		0x80,0x00,
		0x81,0x20,
		0x82,0x40,
		0x83,0x30,
		0x84,0x50,
		0x85,0x30,
		0x86,0xd8,
		0x89,0x45,	
		0x8a,0x33,	
		0x8f,0x81,
		0x91,0xff,	
		0x92,0x08,	
		0x94,0x82,		
		0x95,0xfd,	
		0x9a,0x20,
		0x9e,0xbc,					
		0xf0,0x8f,
		0x51,0x06,
		0x52,0x25,
		0x53,0x2b,
		0x54,0x0f,
		0x57,0x2a,
		0x58,0x22,
		0x59,0x2c,
		0x23,0x33,
		0xa1,0x93,
		0xa2,0x0f,
		0xa3,0x2a,
		0xa4,0x08,
		0xa5,0x26,
		0xa7,0x80,
		0xa8,0x80,
		0xa9,0x1e,
		0xaa,0x19,
		0xab,0x18,
		0xae,0x50,
		0xaf,0x04,	
		0xc8,0x10,
		0xc9,0x15,
		0xd3,0x0c,
		0xd4,0x16,		
		0xee,0x06,
		0xef,0x04,	
		0x55,0x34,
		0x56,0x9c,	
		0xb1,0x98,
		0xb2,0x98,
		0xb3,0xc4,
		0xb4,0x0c,
		0xa0,0x8f,
		0x13,0x07,

	}
}

local gc6153 =
{
	zbar_scan = 1,  --是否支持扫码
	i2c_addr = 0x40,  --/* 摄像头i2c访问地址 */
	sensor_width = 240,  --/* 摄像头的宽 */
	sensor_height = 320, --/* 摄像头的高 */
	id_reg = 0xf1,      -- /* 摄像头ID寄存器 */
	id_value = 0x53,    -- /* 摄像头ID值 */
	-- /* 摄像头SPI是几线输出 */
    --disp.CAMERA_SPI_MODE_LINE1 1线
    --disp.CAMERA_SPI_MODE_LINE2 2线
    --disp.CAMERA_SPI_MODE_LINE4 4线
	spi_mode = disp.CAMERA_SPI_MODE_LINE1, -- /* 摄像头SPI是几线输出 */
	
	-- /* 摄像头采集速率 */
    --disp.CAMERA_SPEED_SDR  单片采集
    --disp.CAMERA_SPEED_DDR  双边采集
	spi_speed = disp.CAMERA_SPEED_SDR,  -- /* 摄像头采集速率 */
	
   --disp.CAMERA_SPI_OUT_Y0_U0_Y1_V0
   --disp.CAMERA_SPI_OUT_Y0_V0_Y1_U0
   --disp.CAMERA_SPI_OUT_U0_Y0_V0_Y1
   --disp.CAMERA_SPI_OUT_U0_Y1_V0_Y0
   --disp.CAMERA_SPI_OUT_V0_Y0_U0_Y1
   --disp.CAMERA_SPI_OUT_Y1_V0_Y0_U0
   --disp.CAMERA_SPI_OUT_Y1_U0_Y0_V0
	spi_yuv_out = disp.CAMERA_SPI_OUT_U0_Y1_V0_Y0, -- /* 摄像头输出YUV的格式 */
	
	init_cmd = --/*摄像头初始化寄存器*/
	{
		--addr  value
		 0xfe, 0xa0  ,
		 0xfe, 0xa0  ,
		 0xfe, 0xa0  ,
		 0xf6, 0x00  ,
		 0xfa, 0x11  ,
		 0xfc, 0x12  ,
		 0xfe, 0x00  , 	
		 0xfe, 0x00  ,
		 0x01, 0x41  , 
		 0x02, 0x12  , 
		 0x0d, 0x40  , 
		 0x14, 0x7E  , 
		 0x16, 0x05 , 
		 0x17, 0x18  , 
		 0x1c, 0x31  , 
		 0x1d, 0xbb  , 
		 0x1f, 0x3f  , 
		 0x73, 0x20  , 
		 0x74, 0x71  , 
		 0x77, 0x22  , 
		 0x7a, 0x08  , 
		 0x11, 0x18  , 
		 0x13, 0x48  , 
		 0x12, 0xc8  , 
		 0x70, 0xc8  , 
		 0x7b, 0x18  , 
		 0x7d, 0x30  , 
		 0x7e, 0x02  , 
		 0xfe, 0x10  , 
		 0xfe, 0x00  ,
		 0xfe, 0x00  ,
		 0xfe, 0x00  ,
		 0xfe, 0x00  ,
		 0xfe, 0x00  ,
		 0xfe, 0x10  ,
		 0xfe, 0x00  ,
		 0x49, 0x61  ,  
		 0x4a, 0x40  ,  
		 0x4b, 0x58  ,  
		 0xfe, 0x00  ,
		 0x39, 0x02  , 
		 0x3a, 0x80  , 
		 0x20, 0x7e  , 
		 0x26, 0x87  , 
		 0x33, 0x10  , 
		 0x37, 0x06  , 
		 0x2a, 0x21  , 
		 0x3f, 0x16  ,
		 0x52, 0xa6  ,
		 0x53, 0x81  ,
		 0x54, 0x43  ,
		 0x56, 0x78  ,
		 0x57, 0xaa  ,
		 0x58, 0xff  , 
		 0x5b, 0x60  , 
		 0x5c, 0x50  , 
		 0xab, 0x2a  , 
		 0xac, 0xb5  ,
		 0x5e, 0x06  , 
		 0x5f, 0x06  ,
		 0x60, 0x44  ,
		 0x61, 0xff  ,
		 0x62, 0x69  , 
		 0x63, 0x13  ,
		 0x65, 0x13  , 
		 0x66, 0x26  ,
		 0x67, 0x07  ,
		 0x68, 0xf5  , 
		 0x69, 0xea  ,
		 0x6a, 0x21  ,
		 0x6b, 0x21  , 
		 0x6c, 0xe4  ,
		 0x6d, 0xfb  ,
		 0x81, 0x3b  , 
		 0x82, 0x3b  , 
		 0x83, 0x4b  ,
		 0x84, 0x90  ,
		 0x86, 0xf0  ,
		 0x87, 0x1d  ,
		 0x88, 0x16  ,
		 0x8d, 0x74  ,
		 0x8e, 0x25  ,
		 0x90, 0x36  ,
		 0x92, 0x43  ,
		 0x9d, 0x32  , 
		 0x9e, 0x81  ,
		 0x9f, 0xf4  ,
		 0xa0, 0xa0  ,
		 0xa1, 0x04  ,
		 0xa3, 0x2d  ,
		 0xa4, 0x01  ,
		 0xb0, 0xc2  ,
		 0xb1, 0x1e  ,
		 0xb2, 0x10  ,
		 0xb3, 0x20  ,
		 0xb4, 0x2d  ,
		 0xb5, 0x1b  , 
		 0xb6, 0x2e  ,
		 0xb8, 0x13  ,
		 0xba, 0x60  ,
		 0xbb, 0x62  ,
		 0xbd, 0x78  , 
		 0xbe, 0x55  ,
		 0xbf, 0xa0  , 
		 0xc4, 0xe7  ,
		 0xc5, 0x15  ,
		 0xc6, 0x16  ,
		 0xc7, 0xeb  , 
		 0xc8, 0xe4  ,
		 0xc9, 0x16  ,
		 0xca, 0x16  ,
		 0xcb, 0xe9  ,
		 0x22, 0xf8  ,
		 0xfe, 0x02  ,
		 0x01, 0x01  , 
		 0x02, 0x80  , 
		 0x03, 0x20  , 
		 0x04, 0x20  ,  
		 0x0a, 0x00  , 
		 0x13, 0x10  , 
		 0x28, 0x03  ,
		 0xfe, 0x00  , 
		 0x22, 0xf8  , 
		 0xf2, 0x03  , 
	},	
}


local gc0310_ddr =
{
	zbar_scan = 1,
	i2c_addr = 0x21, 
	sensor_width = 320, 
	sensor_height = 240, 
	id_reg = 0xf1, 
	id_value = 0x10,
	spi_mode = disp.CAMERA_SPI_MODE_LINE2, 
	spi_speed = disp.CAMERA_SPEED_DDR, 
	spi_yuv_out = disp.CAMERA_SPI_OUT_Y1_V0_Y0_U0, 
	
	init_cmd =
	{
		 
		0xfe,0xf0 ,
		0xfe,0xf0 ,
		0xfe,0x00 ,

		0xfc,0x16 , 
		0xfc,0x16 , 
		0xf2,0x07 , 
		0xf3,0x83 ,
		0xf5,0x07 , 

		0xf7,0x89 , 
		0xf8,0x01 ,         
		0xf9,0x4f , 
		0xfa,0x11 , 
		0xfc,0xce ,
		0xfd,0x00 ,
		0x00,0x2f , 
		0x01,0x0f , 
		0x02,0x04 ,
		0x03,0x02 ,
		0x04,0x12 ,

		0x09,0x00 , 
		0x0a,0x00 , 
		0x0b,0x00 , 
		0x0c,0x04 , 
		0x0d,0x01 , 
		0x0e,0xe8 , 
		0x0f,0x02 , 
		0x10,0x88 , 
		0x16,0x00 ,
		0x17,0x14 ,
		0x18,0x1a , 
		0x19,0x14 , 
		0x1b,0x48 ,
		0x1c, 0x6c ,
		0x1e,0x6b , 
		0x1f,0x28 ,			

		0x20,0x8b , 

		0x21,0x49 , 
		0x22, 0xd0 , 
		0x23,0x04 , 
		0x24,0xff , 
		0x34,0x20 , 
		0x26,0x23 , 
		0x28,0xff ,
		0x29,0x00 ,  
		0x32, 0x04 ,
		0x33,0x10 , 
		0x37,0x20 , 
		0x38,0x10 , 
		0x47,0x80 , 
		0x4e,0x66 , 
		0xa8,0x02 , 
		0xa9,0x80 ,
		0x40,0xff , 
		0x41,0x21 ,
		0x42,0xcf ,  
		0x44,0x02 , 
		0x45,0xa8 , 
		0x46,0x02 , 
		0x4a,0x11 , 
		0x4b,0x01 , 
		0x4c,0x20 ,
		0x4d,0x05 ,
		0x4f,0x01 , 
		0x50,0x01 ,
		0x55,0x01 ,
		0x56,0xe0 , 
		0x57,0x02 ,
		0x58,0x80 , 
		0x70,0x70 ,
		0x5a,0x84 ,
		0x5b,0xc9 ,
		0x5c,0xed ,
		0x77,0x74 ,
		0x78,0x40 ,
		0x79,0x5f , 
		0x82,0x08 , 
		0x83,0x0b ,
		0x89,0xf0 ,

		0x8f,0xaa ,
		0x90,0x8c ,
		0x91,0x90 ,
		0x92,0x03 ,
		0x93,0x03 ,
		0x94,0x05 ,
		0x95,0x43 , 
		0x96,0xf0 , 

		0xfe,0x00 ,
		0x9a, 0x20 , 
		0x9b, 0x80 , 
		0x9c, 0x40 , 
		0x9d, 0x80 , 
		0xa1, 0x30 , 
		0xa2, 0x32 , 
		0xa4, 0x80 ,
		0xa5, 0x28 ,
		0xaa, 0x30 ,				
		0xac, 0x22 , 
		0xfe, 0x00 , 
		0xbf,0x08 , 
		0xc0,0x16 , 
		0xc1,0x28 , 
		0xc2,0x41 , 
		0xc3,0x5a , 
		0xc4,0x6c , 
		0xc5,0x7a , 
		0xc6,0x96 , 
		0xc7,0xac , 
		0xc8,0xbc , 
		0xc9,0xc9 , 
		0xca,0xd3 , 
		0xcb,0xdd , 
		0xcc,0xe5 , 
		0xcd,0xf1 , 
		0xce,0xfa , 
		0xcf,0xff ,
		0xd0,0x40 , 
		0xd1,0x38 ,
		0xd2,0x38 , 
		0xd3,0x50 ,
		0xd6,0xf2 , 
		0xd7,0x1b , 
		0xd8,0x18 , 
		0xdd,0x03 , 
		0xfe,0x01 ,
		0x05,0x30 ,
		0x06,0x75 ,
		0x07,0x40 ,
		0x08,0xb0 ,
		0x0a,0xc5 ,
		0x0b,0x11 ,
		0x0c,0x00 ,
		0x12,0x52 ,
		0x13,0x38 ,
		0x18,0x95 ,
		0x19,0x96 ,
		0x1f, 0x20 , 
		0x20, 0xc0 , 
		0x3e,0x40 , 
		0x3f,0x57 , 
		0x40,0x7d , 
		0x03,0x60 , 
		0x44, 0x02 , 
		0xfe,0x01 ,
		0x1c,0x91 ,
		0x21,0x15 ,
		0x50,0x80 ,
		0x56,0x04 ,
		0x59,0x08 ,
		0x5b,0x02 ,
		0x61,0x8d ,
		0x62,0xa7 ,
		0x63,0xd0 ,
		0x65,0x06 ,
		0x66,0x06 ,
		0x67,0x84 ,
		0x69,0x08 ,
		0x6a,0x25 ,
		0x6b,0x01 ,
		0x6c,0x00 ,
		0x6d,0x02 ,
		0x6e,0xf0 ,
		0x6f,0x80 ,
		0x76,0x80 ,
		0x78,0xaf ,


		0x79,0x75 ,
		0x7a,0x40 ,
		0x7b,0x50 ,
		0x7c,0x0c , 

		0x90,0xc9 ,
		0x91,0xbe ,
		0x92,0xe2 ,
		0x93,0xc9 ,
		0x95,0x1b ,
		0x96,0xe2 ,
		0x97,0x49 ,
		0x98,0x1b ,
		0x9a,0x49 ,
		0x9b,0x1b ,
		0x9c,0xc3 ,
		0x9d,0x49 ,
		0x9f,0xc7 ,
		0xa0,0xc8 ,
		0xa1,0x00 ,
		0xa2,0x00 ,
		0x86,0x00 ,
		0x87,0x00 ,
		0x88,0x00 ,
		0x89,0x00 ,
		0xa4,0xb9 ,
		0xa5,0xa0 ,
		0xa6,0xba ,
		0xa7,0x92 ,
		0xa9,0xba ,
		0xaa,0x80 ,
		0xab,0x9d ,
		0xac,0x7f ,
		0xae,0xbb ,
		0xaf,0x9d ,
		0xb0,0xc8 ,
		0xb1,0x97 ,
		0xb3,0xb7 ,
		0xb4,0x7f ,
		0xb5,0x00 ,
		0xb6,0x00 ,
		0x8b,0x00 ,
		0x8c,0x00 ,
		0x8d,0x00 ,
		0x8e,0x00 ,
		0x94,0x55 ,
		0x99,0xa6 ,
		0x9e,0xaa ,
		0xa3,0x0a ,
		0x8a,0x00 ,
		0xa8,0x55 ,
		0xad,0x55 ,
		0xb2,0x55 ,
		0xb7,0x05 ,
		0x8f,0x00 ,
		0xb8,0xcb ,
		0xb9,0x9b ,  
		0xfe,0x01 ,
		0xd0, 0x38 , 
		0xd1, 0x00 , 
		0xd2, 0x02 , 
		0xd3, 0x04 , 
		0xd4, 0x38 , 
		0xd5, 0x12 , 
		0xd6,0x30 ,
		0xd7,0x00 ,
		0xd8,0x0a ,
		0xd9,0x16 ,
		0xda,0x39 ,
		0xdb,0xf8 ,
		0xfe,0x01 , 
		0xc1,0x3c ,
		0xc2,0x50 ,
		0xc3,0x00 ,
		0xc4,0x40 ,
		0xc5,0x30 ,
		0xc6,0x30 ,
		0xc7,0x10 ,
		0xc8,0x00 ,
		0xc9,0x00 ,
		0xdc,0x20 ,
		0xdd,0x10 ,
		0xdf,0x00 , 
		0xde,0x00 , 
		0x01,0x10 , 
		0x0b, 0x31 , 
		0x0e,0x50 , 
		0x0f,0x0f , 
		0x10,0x6e , 
		0x12,0xa0 , 
		0x15,0x60 , 
		0x16,0x60 , 
		0x17,0xe0 , 
		0xcc,0x0c ,
		0xcd,0x10 , 
		0xce,0xa0 , 
		0xcf,0xe6 , 
		0x45,0xf7 ,
		0x46,0xff , 
		0x47,0x15 ,
		0x48,0x03 , 
		0x4f,0x60 ,

		0xfe,0x00 ,
		0x05, 0x01 , 
		0x06, 0x89 , 
		0x07, 0x00 , 
		0x08, 0x2a , 
		0xfe, 0x01 , 
		0x25, 0x00 , 
		0x26, 0x6d , 
		0x27, 0x01 , 
		0x28, 0xb4 , 
		0x29, 0x02 , 
		0x2a, 0x8e , 
		0x2b, 0x02 , 
		0x2c, 0xfb , 
		0x2d, 0x07 , 
		0x2e, 0x3d , 

		0x3c,0x20 ,

		0x50,0x01 ,	
		0x51,0x00 ,
		0x52,0x78 ,
		0x53,0x00 ,
		0x54,0xa0 ,
		0x55,0x00 ,
		0x56,0xf0 ,
		0x57,0x01 ,
		0x58,0x40 ,

		0xfe,0x03 ,
		0x01,0x00 ,
		0x02,0x00 ,
		0x10,0x00 ,
		0x15,0x00 ,
		0x17,0x00 , 
		0x04,0x10 ,
		0x05,0x00 ,
		0x40,0x00 ,


		0x52,0xa0 , 

		0x53,0x24 , 
		0x54,0x20 ,
		0x55,0x20 , 
		0x5a,0x00 , 
		0x51,0x03 ,
		0x64,0x06 ,
		0xfe,0x00 ,
	},	
}

local gc0310_sdr =
{
	zbar_scan = 1,
	i2c_addr = 0x21, 
	sensor_width = 320, 
	sensor_height = 240, 
	id_reg = 0xf1, 
	id_value = 0x10,
	spi_mode = disp.CAMERA_SPI_MODE_LINE2, 
	spi_speed = disp.CAMERA_SPEED_SDR, 
	spi_yuv_out = disp.CAMERA_SPI_OUT_Y1_V0_Y0_U0, 
	
	init_cmd = 
	{
		
		 0xfe,0xf0 ,
		 0xfe,0xf0 ,
		 0xfe,0x00 ,

		 0xfc,0x16 , --4e 
		 0xfc,0x16 , --4e -- [0]apwd [6]regf_clk_gate 
		 0xf2,0x07 , --sync output
		 0xf3,0x83 , --ff--1f--01 data output
		 0xf5,0x07 , --sck_dely

		 0xf7,0x88 , --f8/   88
		 0xf8,0x00 ,           -- 00
		 0xf9,0x4f , --0f--01   4d
		 0xfa,0x32 , --32

		 0xfc,0xce ,
		 0xfd,0x00 ,
		------------------------------------------------/
		----------------/   CISCTL reg  ----------------/
		------------------------------------------------/
		 0x00,0x2f , 
		 0x01,0x0f , 
		 0x02,0x04 ,

		 0x03,0x02 ,
		 0x04,0x12 ,

		 0x09,0x00 , 
		 0x0a,0x00 , 
		 0x0b,0x00 , 
		 0x0c,0x02 ,--04 
		 0x0d,0x01 , 
		 0x0e,0xec ,--e8 
		 0x0f,0x02 , 
		 0x10,0x88 , 
		 0x16,0x00 ,
		 0x17,0x14 , --mirror
		 0x18,0x6a ,--1a 
		 0x19,0x14 , 
		 0x1b,0x48 ,
		 0x1c,0x1c ,
		 0x1e,0x6b ,
		 0x1f,0x28 ,
		 0x20,0x8b ,--0x89 travis20140801
		 0x21,0x49 ,
		 0x22,0xb0 ,
		 0x23,0x04 , 
		 0x24,0xff , 
		 0x34,0x20 , 


		------------------------------------------------/
		--------------------   BLK   --------------------
		------------------------------------------------/
		 0x26,0x23 ,
		 0x28,0xff ,
		 0x29,0x00 ,
		 0x32,0x00 ,
		 0x33,0x10 , 
		 0x37,0x20 ,
		 0x38,0x10 ,
		 0x47,0x80 ,
		 0x4e,0x0f ,--66
		 0xa8,0x02 ,
		 0xa9,0x80 ,


		------------------------------------------------/
		------------------   ISP reg  ------------------/
		------------------------------------------------/
		 0x40,0xff ,
		 0x41,0x21 ,
		 0x42,0xcf ,
		 0x44,0x02 ,
		 0x45,0xa8 , 
		 0x46,0x02 , --sync
		 0x4a,0x11 ,
		 0x4b,0x01 ,
		 0x4c,0x20 ,
		 0x4d,0x05 ,
		 0x4f,0x01 ,
		 0x50,0x01 ,
		 0x55,0x00 ,
		 0x56,0xf0 ,
		 0x57,0x01 ,
		 0x58,0x40 ,
		------------------------------------------------/
		------------------/   GAIN   --------------------
		------------------------------------------------/
		 0x70,0x70 ,
		 0x5a,0x84 ,
		 0x5b,0xc9 ,
		 0x5c,0xed ,
		 0x77,0x74 ,
		 0x78,0x40 ,
		 0x79,0x5f , 


		------------------------------------------------/ 
		------------------/   DNDD  --------------------/
		------------------------------------------------/ 
		 0x82,0x08 ,--0x14 
		 0x83,0x0b ,
		 0x89,0xf0 ,
		------------------------------------------------/ 
		------------------   EEINTP  --------------------
		------------------------------------------------/ 
		 0x8f,0xaa ,
		 0x90,0x8c ,
		 0x91,0x90 ,
		 0x92,0x03 ,
		 0x93,0x03 ,
		 0x94,0x05 ,
		 0x95,0x43 , --0x65
		 0x96,0xf0 , 
		------------------------------------------------/ 
		--------------------/  ASDE  --------------------
		------------------------------------------------/ 
		 0xfe,0x00 ,

		 0x9a,0x20 ,
		 0x9b,0x80 ,
		 0x9c,0x40 ,
		 0x9d,0x80 ,
		 
		 0xa1,0x30 ,
			 0xa2,0x32 ,
		 0xa4,0x30 ,
		 0xa5,0x30 ,
		 0xaa,0x10 , 
		 0xac,0x22 ,
		 

		------------------------------------------------/
		------------------/   GAMMA   ------------------/
		------------------------------------------------/
		 0xfe,0x00 ,--default
		 0xbf,0x08 ,
		 0xc0,0x16 ,
		 0xc1,0x28 ,
		 0xc2,0x41 ,
		 0xc3,0x5a ,
		 0xc4,0x6c ,
		 0xc5,0x7a ,
		 0xc6,0x96 ,
		 0xc7,0xac ,
		 0xc8,0xbc ,
		 0xc9,0xc9 ,
		 0xca,0xd3 ,
		 0xcb,0xdd ,
		 0xcc,0xe5 ,
		 0xcd,0xf1 ,
		 0xce,0xfa ,
		 0xcf,0xff ,

		------------------------------------------------/
		------------------/   YCP  ----------------------
		------------------------------------------------/
		 0xd0,0x40 , 
		 0xd1,0x38 , --0x34
		 0xd2,0x38 , --0x34
		 0xd3,0x50 ,--0x40 
		 0xd6,0xf2 , 
		 0xd7,0x1b , 
		 0xd8,0x18 , 
		 0xdd,0x03 , 

		------------------------------------------------/
		--------------------   AEC   --------------------
		------------------------------------------------/
		 0xfe,0x01 ,
		 0x05,0x30 ,
		 0x06,0x75 ,
		 0x07,0x40 ,
		 0x08,0xb0 ,
		 0x0a,0xc5 ,
		 0x0b,0x11 ,
		 0x0c,0x00 ,
		 0x12,0x52 ,
		 0x13,0x38 ,
		 0x18,0x95 ,
		 0x19,0x96 ,
		 0x1f,0x20 , 
		 0x20,0xc0 , 
		 0x3e,0x40 , 
		 0x3f,0x57 , 
		 0x40,0x7d , 

		 0x03,0x60 , 

		 0x44,0x02 , 
		------------------------------------------------/
		--------------------   AWB   --------------------
		------------------------------------------------/
		 0xfe,0x01 ,
		 0x1c,0x91 , 
		 0x21,0x15 , 
		 0x50,0x80 ,
		 0x56,0x04 ,
		 0x59,0x08 , 
		 0x5b,0x02 ,
		 0x61,0x8d , 
		 0x62,0xa7 , 
		 0x63,0xd0 , 
		 0x65,0x06 ,
		 0x66,0x06 , 
		 0x67,0x84 , 
		 0x69,0x08 , 
		 0x6a,0x25 , 
		 0x6b,0x01 , 
		 0x6c,0x00 , 
		 0x6d,0x02 , 
		 0x6e,0xf0 , 
		 0x6f,0x80 , 
		 0x76,0x80 , 
		 0x78,0xaf , 
		 0x79,0x75 ,
		 0x7a,0x40 ,
		 0x7b,0x50 ,
		 0x7c,0x0c , 

		 0x90,0xc9 ,--stable AWB 
		 0x91,0xbe ,
		 0x92,0xe2 ,
		 0x93,0xc9 ,
		 0x95,0x1b ,
		 0x96,0xe2 ,
		 0x97,0x49 ,
		 0x98,0x1b ,
		 0x9a,0x49 ,
		 0x9b,0x1b ,
		 0x9c,0xc3 ,
		 0x9d,0x49 ,
		 0x9f,0xc7 ,
		 0xa0,0xc8 ,
		 0xa1,0x00 ,
		 0xa2,0x00 ,
		 0x86,0x00 ,
		 0x87,0x00 ,
		 0x88,0x00 ,
		 0x89,0x00 ,
		 0xa4,0xb9 ,
		 0xa5,0xa0 ,
		 0xa6,0xba ,
		 0xa7,0x92 ,
		 0xa9,0xba ,
		 0xaa,0x80 ,
		 0xab,0x9d ,
		 0xac,0x7f ,
		 0xae,0xbb ,
		 0xaf,0x9d ,
		 0xb0,0xc8 ,
		 0xb1,0x97 ,
		 0xb3,0xb7 ,
		 0xb4,0x7f ,
		 0xb5,0x00 ,
		 0xb6,0x00 ,
		 0x8b,0x00 ,
		 0x8c,0x00 ,
		 0x8d,0x00 ,
		 0x8e,0x00 ,
		 0x94,0x55 ,
		 0x99,0xa6 ,
		 0x9e,0xaa ,
		 0xa3,0x0a ,
		 0x8a,0x00 ,
		 0xa8,0x55 ,
		 0xad,0x55 ,
		 0xb2,0x55 ,
		 0xb7,0x05 ,
		 0x8f,0x00 ,
		 0xb8,0xcb ,
		 0xb9,0x9b ,  
		 

		------------------------------------------------/
		--------------------  CC ------------------------
		------------------------------------------------/
		 0xfe,0x01 ,

		 0xd0,0x38 ,--skin red
		 0xd1,0x00 ,
		 0xd2,0x02 ,
		 0xd3,0x04 ,
		 0xd4,0x38 ,
		 0xd5,0x12 ,	

		 0xd6,0x30 ,
		 0xd7,0x00 ,
		 0xd8,0x0a ,
		 0xd9,0x16 ,
		 0xda,0x39 ,
		 0xdb,0xf8 ,
		------------------------------------------------/
		--------------------   LSC   --------------------
		------------------------------------------------/
		 0xfe,0x01 , 
		 0xc1,0x3c ,
		 0xc2,0x50 ,
		 0xc3,0x00 ,
		 0xc4,0x40 ,
		 0xc5,0x30 ,
		 0xc6,0x30 ,
		 0xc7,0x10 ,
		 0xc8,0x00 ,
		 0xc9,0x00 ,
		 0xdc,0x20 ,
		 0xdd,0x10 ,
		 0xdf,0x00 , 
		 0xde,0x00 , 


		------------------------------------------------/
		------------------/  Histogram  ----------------/
		------------------------------------------------/
		 0x01,0x10 , 
		 0x0b,0x31 , 
		 0x0e,0x50 , 
		 0x0f,0x0f , 
		 0x10,0x6e , 
		 0x12,0xa0 , 
		 0x15,0x60 , 
		 0x16,0x60 , 
		 0x17,0xe0 , 


		------------------------------------------------/
		--------------   Measure Window   --------------/
		------------------------------------------------/
		 0xcc,0x0c , 
		 0xcd,0x10 , 
		 0xce,0xa0 , 
		 0xcf,0xe6 , 


		------------------------------------------------/
		----------------/   dark sun   ------------------
		------------------------------------------------/
		 0x45,0xf7 ,
		 0x46,0xff , 
		 0x47,0x15 ,
		 0x48,0x03 , 
		 0x4f,0x60 , 
									
		------------------------------------------------/
		------------------/  banding  ------------------/
		------------------------------------------------/
		 0xfe,0x00 ,
		 0x05,0x01 ,
		 0x06,0x12 , --HB
		 0x07,0x00 ,
		 0x08,0x1c , --VB
		 0xfe,0x01 ,
		 0x25,0x00 , --step 
		 0x26,0x1f , 
		 0x27,0x01 , --6fps
		 0x28,0xf0 ,  
		 0x29,0x01 , --6fps
		 0x2a,0xf0 , 
		 0x2b,0x01 , --6fps
		 0x2c,0xf0 , 
		 0x2d,0x03 , --3.3fps
		 0x2e,0xe0 ,
		 0x3c,0x20 ,
		--------------------/  SPI   --------------------
		------------------------------------------------/
		 0xfe,0x03 ,
		 0x01,0x00 ,
		 0x02,0x00 ,
		 0x10,0x00 ,
		 0x15,0x00 ,
		 0x17,0x00 , --01--03
		 0x04,0x10 ,--fifo full level
		 0x40,0x00 ,
		 0x52,0x82 , --zwb 02改成da
		 0x53,0x24 , --24
		 0x54,0x20 ,
		 0x55,0x20 , --QQ--01
		 0x5a,0x00 , --00 --yuv 
		 0x5b,0x40 ,
		 0x5c,0x01 ,
		 0x5d,0xf0 ,
		 0x5e,0x00 ,
		 0x51,0x03 ,
		 0xfe,0x00 ,

	}
}

2.1 初始化lcd

--[[
函数名:init
功能  :初始化LCD参数
参数  :无
返回值:无
]]
local function init()
    local para =
    {
        width = 128, --分辨率宽度,128像素;用户根据屏的参数自行修改
        height = 160, --分辨率高度,160像素;用户根据屏的参数自行修改
        bpp = 16, --位深度,彩屏仅支持16位
        bus = disp.BUS_SPI4LINE, --LCD专用SPI引脚接口,不可修改
        xoffset = 2, --X轴偏移
        yoffset = 1, --Y轴偏移
        freq = 13000000, --spi时钟频率,支持110K到13M(即110000到13000000)之间的整数(包含110000和13000000)
        pinrst = pio.P0_6, --reset,复位引脚
        pinrs = pio.P0_1, --rs,命令/数据选择引脚
        --camera_preview_no_update_screen = 1, --0表示摄像头预览刷屏;1表示摄像头预览不刷屏
        --初始化命令
        --前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
        --延时类型:后两个字节表示延时时间(单位毫秒)
        --命令类型:后两个字节命令的值
        --数据类型:后两个字节数据的值
        initcmd =
        {
            0x00020011,
            0x00010078,
            --0x00020021, -- 反显
            0x000200B1,
            0x00030002,
            0x00030035,
            0x00030036,
            0x000200B2,
            0x00030002,
            0x00030035,
            0x00030036,
            0x000200B3,
            0x00030002,
            0x00030035,
            0x00030036,
            0x00030002,
            0x00030035,
            0x00030036,
            0x000200B4,
            0x00030007,
            0x000200C0,
            0x000300A2,
            0x00030002,
            0x00030084,
            0x000200C1,
            0x000300C5,
            0x000200C2,
            0x0003000A,
            0x00030000,
            0x000200C3,
            0x0003008A,
            0x0003002A,
            0x000200C4,
            0x0003008A,
            0x000300EE,
            0x000200C5,
            0x0003000E,
            0x00020036,
            0x00030000,  --0x000300C0 --mirror
            0x000200E0,
            0x00030012,
            0x0003001C,
            0x00030010,
            0x00030018,
            0x00030033,
            0x0003002C,
            0x00030025,
            0x00030028,
            0x00030028,
            0x00030027,
            0x0003002F,
            0x0003003C,
            0x00030000,
            0x00030003,
            0x00030003,
            0x00030010,
            0x000200E1,
            0x00030012,
            0x0003001C,
            0x00030010,
            0x00030018,
            0x0003002D,
            0x00030028,
            0x00030023,
            0x00030028,
            0x00030028,
            0x00030026,
            0x0003002F,
            0x0003003B,
            0x00030000,
            0x00030003,
            0x00030003,
            0x00030010,
            0x0002003A,
            0x00030005,
            0x00020029,
        },
        --休眠命令
        sleepcmd = {
            0x00020010,
        },
        --唤醒命令
        wakecmd = {
            0x00020011,
        }
    }
    disp.init(para)
    disp.clear()
    disp.update()
end

--控制SPI引脚的电压域
pmd.ldoset(15,pmd.LDO_VLCD)
init()

3.定义一个扫码函数

function scan()
    --唤醒系统
    pm.wake("testScanCode")
    local ret = 0

    --设置扫码回调函数,默认10秒超时
    scanCode.request(scanCodeCb)
    
    --打开摄像头
    --ret = disp.cameraopen(1,1) -- 内部配置的gc0310 camera
    --ret = disp.cameraopen_ext(gc6153) -- 外部配置gc6153 camera SDR
    ret = disp.cameraopen_ext(gc0310_sdr) -- 外部配置gc0310 camera SDR
    --ret = disp.cameraopen_ext(gc0310_ddr) -- 外部配置gc0310 camera DDR
    --ret = disp.cameraopen_ext(bf302A_sdr) -- 外部配置bf302A camera SDR
      
    log.info("testScanCode cameraopen_ext ret ", ret)
    --打开摄像头预览
    --zoom: 放缩设置, 正数放大负数缩小,最大4倍,0不放缩
    --disp.camerapreviewzoom(zoom)
    --缩小2倍
    disp.camerapreviewzoom(-2)
    ret = disp.camerapreview(0,0,0,0,128,160)
    --rotation:反转角度设置 暂时只支持0和90度
    --disp.camerapreviewrotation(90)
end

4.定义一个拍照函数

-- 拍照并显示
function takePhotoAndDisplay()
    --唤醒系统
    pm.wake("testTakePhoto")
    --打开摄像头
    disp.cameraopen(1,0,0,1)
    --disp.cameraopen(1,0,0,0)  --因目前core中还有问题没解决,所以不能关闭隔行隔列
    --打开摄像头预览
    --如果有LCD,使用LCD的宽和高
    --如果无LCD,宽度设置为240像素,高度设置为320像素,240*320是Air268F支持的最大分辨率
    disp.camerapreview(0,0,0,0,WIDTH or DEFAULT_WIDTH,HEIGHT or DEFAULT_HEIGHT)
    --设置照片的宽和高像素并且开始拍照
    --此处设置的宽和高和预览时的保持一致
    --此处的第三个参数表示拍摄质量,默认50,100最好
    disp.cameracapture(WIDTH or DEFAULT_WIDTH,HEIGHT or DEFAULT_HEIGHT)
	
    --设置照片保存路径
    disp.camerasavephoto("/testCamera.jpg")
    log.info("testCamera.takePhotoAndDisplay fileSize",io.fileSize("/testCamera.jpg"))
    --关闭摄像头预览
    disp.camerapreviewclose()
    --关闭摄像头
    disp.cameraclose()
    --允许系统休眠
    pm.sleep("testTakePhoto")    

    --testUartSentFile.sendFile()
    --显示拍照图片   
    if WIDTH~=0 and HEIGHT~=0 then
        disp.clear()
        disp.putimage("/testCamera.jpg",0,0)
        disp.puttext(common.utf8ToGb2312("照片尺寸: "..io.fileSize("/testCamera.jpg")),0,5)
        disp.update()
    end   
    
    --sys.timerStart(takePhotoAndDisplay,1000)    
end

5.开启1个循环定时器,执行拍照函数

sys.timerLoopStart(takePhotoAndDisplay,5000)

6.在了解并修改了DEMO后将demo和对应的底包下载到开发板,下载的方式这里不详细说明请参考环境搭建中的烧录章节。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PtxFaDbD-1624852160205)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210416210816993_微信截图_20210416210714.png “undefined”)]

7.开启1个循环定时器,执行扫码函数

sys.timerStart(scan,1000)

8.在了解并修改了DEMO后将demo和对应的底包下载到开发板,并对着一个二维码扫描,可以在屏上看到扫描的类型,和数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TLJpodAy-1624852160206)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210416211520716_微信截图_20210416211409.png “undefined”)]

显示屏上的显示内容如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SxGYNw1e-1624852160207)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210416211847108_微信图片_20210416211733.jpg “undefined”)]


常见问题

  • 为什么显示白屏,黑屏,扫码不成功?
    查看下,屏是否插好,引脚是否接对,core,是否选对。

  • 为什么图像左移
    看是否把预览缩小2倍
    –zoom: 放缩设置, 正数放大负数缩小,最大4倍,0不放缩
    disp.camerapreviewzoom(zoom)
    –缩小2倍
    disp.camerapreviewzoom(-2)


相关资料以及购买链接

Air724UG开发板
Air724 开发板使用说明

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值