void arducam_set_jpeg_size(jpeg_size_t size) { #ifdef OV2640_CAM switch(size) { case sz160x120: arducam_i2c_write_regs(OV2640_160x120_JPEG); break; case sz176x144: arducam_i2c_write_regs(OV2640_176x144_JPEG); break; case sz320x240: arducam_i2c_write_regs(OV2640_320x240_JPEG); break; case sz352x288: arducam_i2c_write_regs(OV2640_352x288_JPEG); break; case sz640x480: arducam_i2c_write_regs(OV2640_640x480_JPEG); break; case sz800x600: arducam_i2c_write_regs(OV2640_800x600_JPEG); break; case sz1024x768: arducam_i2c_write_regs(OV2640_1024x768_JPEG); break; case sz1280x960: arducam_i2c_write_regs(OV2640_1280x960_JPEG); break; case sz1600x1200: arducam_i2c_write_regs(OV2640_1600x1200_JPEG); break; default: arducam_i2c_write_regs(OV2640_320x240_JPEG); 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; } }