void arducam_OV5642_set_jpeg_size(jpeg_size_t size) { #if defined OV5642_CAM arducam_i2c_write_word_regs(ov5642_dvp_fmt_global_init); delay(100); switch(size) { case OV5642_320x240: arducam_i2c_write_word_regs(ov5642_dvp_fmt_jpeg_qvga); break; case OV5642_640x480: arducam_i2c_write_word_regs(ov5642_dvp_fmt_jpeg_vga); break; // case OV5642_1280x720: // // arducam_i2c_write_word_regs(ov5642_dvp_fmt_jpeg_qvga); // arducam_i2c_write_word_regs(ov5642_res_720P); // // break; case OV5642_1920x1080: arducam_i2c_write_word_regs(OV5642_1080P_Video_setting); arducam_i2c_write_word_regs(ov5642_dvp_fmt_jpeg_qvga); break; case OV5642_2048x1536: arducam_i2c_write_word_regs(ov5642_dvp_fmt_jpeg_qxga); arducam_i2c_word_write(0x3818, 0xA8); arducam_i2c_word_write(0x3621, 0x10); arducam_i2c_word_write(0x3801 , 0xC8); break; case OV5642_2592x1944: arducam_i2c_write_word_regs(ov5642_dvp_fmt_jpeg_5M); arducam_i2c_word_write(0x4407,0x08); arducam_i2c_word_write(0x3818, 0xA8); arducam_i2c_word_write(0x3621, 0x10); arducam_i2c_word_write(0x3801 , 0xC8); break; default: arducam_i2c_write_word_regs(ov5642_dvp_fmt_jpeg_qvga); break; } #endif }
void arducam_init() { switch(myCAM.sensor_model) { #ifdef OV7660_CAM case smOV7660: { arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); (void) arducam_i2c_write_regs(OV7660_QVGA); break; } #endif #ifdef OV7725_CAM case smOV7725: { uint8_t reg_val; arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); (void) arducam_i2c_write_regs(OV7725_QVGA); arducam_i2c_read(0x15,®_val); arducam_i2c_write(0x15, (reg_val | 0x02)); break; } #endif #ifdef OV7670_CAM case smOV7670: { arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); (void) arducam_i2c_write_regs(OV7670_QVGA); break; } #endif #ifdef OV7675_CAM case smOV7675: { arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); (void) arducam_i2c_write_regs(OV7675_QVGA); break; } #endif #ifdef MT9D111_CAM case smMT9D111: { //arducam_i2c_write_regs16(MT9D111_QVGA_3fps); arducam_i2c_write_regs16(MT9D111_QVGA_15fps); //arducam_i2c_write_regs16(MT9D111_QVGA_30fps); arducam_delay_ms(1000); arducam_i2c_write16(0x97, 0x0020); arducam_i2c_write16(0xf0, 0x00); arducam_i2c_write16(0x21, 0x8403); //Mirror Column arducam_i2c_write16(0xC6, 0xA103);//SEQ_CMD arducam_i2c_write16(0xC8, 0x0005); //SEQ_CMD break; } #endif #ifdef OV5642_CAM case smOV5642: { uint8_t reg_val; arducam_i2c_word_write(0x3008, 0x80); arducam_delay_ms(100); if(myCAM.m_fmt == fmtJPEG) { arducam_i2c_write_word_regs(OV5642_1080P_Video_setting); arducam_i2c_word_read(0x3818,®_val); arducam_i2c_word_write(0x3818, (reg_val | 0x20) & 0xBf); arducam_i2c_word_read(0x3621,®_val); arducam_i2c_word_write(0x3621, reg_val | 0x20); } else { arducam_i2c_write_word_regs(OV5642_RGB_QVGA); arducam_i2c_word_read(0x3818,®_val); arducam_i2c_word_write(0x3818, (reg_val | 0x60) & 0xff); arducam_i2c_word_read(0x3621,®_val); arducam_i2c_word_write(0x3621, reg_val & 0xdf); } break; } #endif #ifdef OV3640_CAM case smOV3640: { (void) arducam_i2c_write_word_regs(OV3640_QVGA); break; } #endif #ifdef OV2640_CAM case smOV2640: { arducam_i2c_write(0xff, 0x01); arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); if(myCAM.m_fmt == fmtJPEG) { arducam_i2c_write_regs(OV2640_JPEG_INIT); arducam_i2c_write_regs(OV2640_YUV422); arducam_i2c_write_regs(OV2640_JPEG); arducam_i2c_write(0xff, 0x01); arducam_i2c_write(0x15, 0x00); arducam_i2c_write_regs(OV2640_320x240_JPEG); //arducam_i2c_write(0xff, 0x00); //arducam_i2c_write(0x44, 0x32); } else { arducam_i2c_write_regs(OV2640_QVGA); } break; } #endif case smOV9655: { break; } case smMT9M112: { break; } default: break; } }