"""
******************************************************************************
* @file main.py
* @author
* @version V1.0
* @date 2023-12-01
* @brief 摄像头实验
******************************************************************************
*
* 实验目的:如何驱动OV2640和OV5640摄像头模块
*
* 硬件资源及引脚分配:
* 1, LED --> ESP32S3 IO
* LED --> IO1
* 2, XL9555 --> ESP32S3 IO
* SCL --> IO42
* SDA --> IO41
* INT --> IO0(跳线帽连接)
* 3, SPI_LCD --> ESP32S3 IO / XL9555
* CS --> IO21
* SCK --> IO12
* SDA --> IO11
* DC --> IO40(跳线帽连接)
* PWR --> XL9555_P13
* RST --> XL9555_P12
* 4, CAMERA --> ESP32S3 IO / XL9555
* OV_SCL --> 38
* OV_SDA --> 39
* VSYNC --> 47
* HREF --> 48
* PCLK --> 45
* D0 --> 4
* D1 --> 5
* D2 --> 6
* D3 --> 7
* D4 --> 15
* D5 --> 16
* D6 --> 17
* D7 --> 18
* RESET --> XL9535_P05
* PWDN --> XL9535_P04
*
* 实验现象
* 1, 本实验代码,开机的时候先初始化XL9555IO扩展芯片,然后复位并开启摄像头,接着对摄像头及LCD进行初始化,最后调用函数显示摄像头数据到LCD显示屏上。
*
* 注意事项
* 无
*
* 定制开发,技术V:349014857
* 更多例程:https://iot666.blog.csdn.net/
* 开发咨询:http://doc.yotill.com
"""
import time
import camera
import atk_xl9555 as io_ex
import atk_lcd as lcd
from machine import Pin,SPI,I2C
"""
* @brief 程序入口
* @param 无
* @retval 无
"""
if __name__ == '__main__':
# IIC初始化
i2c0 = I2C(0, scl = Pin(42), sda = Pin(41), freq = 400000)
# XL9555初始化
xl9555 = io_ex.init(i2c0)
xl9555.write_bit(io_ex.BEEP,1)
# 复位摄像头
xl9555.write_bit(io_ex.OV_RESET,0)
time.sleep_ms(100)
xl9555.write_bit(io_ex.OV_RESET,1)
time.sleep_ms(100)
# 开启摄像头
xl9555.write_bit(io_ex.OV_PWDN,1)
time.sleep_ms(100)
xl9555.write_bit(io_ex.OV_PWDN,0)
time.sleep_ms(100)
# 给复位留时间
time.sleep_ms(1000)
# 初始化摄像头
for i in range(5):
cam = camera.init(0, format=camera.RGB565, fb_location=camera.PSRAM,framesize = camera.FRAME_240X240,xclk_freq = 24000000)
print("Camera ready?: ", cam)
if cam:
print("Camera ready")
break
else:
camera.deinit()
camera.init(0, format=camera.RGB565, fb_location=camera.PSRAM,framesize = camera.FRAME_240X240,xclk_freq = 24000000)
time.sleep(2)
else:
print('Timeout')
reset()
# 复位LCD
xl9555.write_bit(io_ex.SLCD_RST,0)
time.sleep_ms(100)
xl9555.write_bit(io_ex.SLCD_RST,1)
time.sleep_ms(100)
# 初始化SPI
spi = SPI(2,baudrate = 80000000, sck = Pin(12), mosi = Pin(11), miso = Pin(13))
# 初始化LCD,lcd = 0为####2.4寸屏幕;lcd = 1为####1.3寸SPILCD屏幕;
display = lcd.init(spi,dc = Pin(40,Pin.OUT,Pin.PULL_UP,value = 1),cs = Pin(21,Pin.OUT,Pin.PULL_UP,value = 1),dir = 1,lcd = 0)
# 开启背光
xl9555.write_bit(io_ex.SLCD_PWR,1)
time.sleep_ms(100)
display.camera(42,5)

嵌入式电子产品开发
- 粉丝: 3499
最新资源
- 改进下垂控制与微电网控制方向下的负载与储能系统仿真研究
- 离线iP库 输入IP地址立即返回IP所在地址信息(支持Java、Python)包含: GeoLite2-City.mmdb GeoLite2-ASN.mmdb
- Maxwell与OptiStruct联合仿真:多目标优化在电动系统关键性能指标中的应用
- 永磁同步电机矢量控制Matlab仿真:双闭环与前馈补偿下的波形表现优秀 - 前馈补偿 高级版
- 电力电子技术中三相可控整流电路设计与仿真的关键技术及应用 · 三相可控整流 v3.0
- 永磁同步电机退磁与温磁双向耦合分析——基于Workbench平台的Maxwell&Fluent实操教程
- 量产车型BMS软件设计详解:碰撞检测、采样处理与多模块功能管理 · 故障诊断 (07月28日)
- 基于博途1200PLC与HMI的水塔水位自动控制系统仿真及其应用
- 基于springboot“智慧食堂”系统设计与实现coder.zip
- 光子晶体光纤与石墨烯-黑磷增强SPR等离子体谐振传感关键技术研究 黑磷
- 光伏系统中三路Boost交错并联技术的C语言实现及仿真分析
- COMSOL多极分解技术在石墨烯电磁场与光学仿真的应用研究
- 电力电子领域中正负序PLL锁相环算法在华为与阳光电源DSP芯片中的应用及C语言实现 C语言
- mmdbIP库文件资源
- 混凝土细观单轴受压与受拉模拟的复现研究——基于太原理工大学硕士论文的方法与结果
- 基于Matlab Robotic Toolbox的四轴机械臂建模与运动控制仿真研究
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


