【EPS32S3学习笔记】OV2640+OLED的图像刷新率

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

之前将OLED+OV2640调通了之后,做了一个小Demo,一开始的显示效果并不是很好,刷新率上不了,而且拖影挺明显。后面来回调整了以下,速度上没有理想的那样好,但是勉强可以接受。下面是一些可以帮助提升刷新率的点。


提示:以下是本篇文章正文内容,下面案例可供参考

一、任务的分配

任务在创建的时候是可以指定其运行的CPU的,像这个应用中,如果把GUI和Camera都放在同一个CPU里运行,必然会有所卡顿,所以要对CPU合理的进行利用。
再一个ESP32S3的CPU频率可以配置到240MHz,SDK配置里默认好像是160MHz,性能既然有富裕,别浪费了,直接全速跑起。虽然对GUI的刷新率影响不大,但是实际的效果会好一点。

二、Camera的配置

对Camera速度影响最大的,或者根本。其实是XCLK的速度。这一点没有深入研究,但是提高速度后运行会异常,可能是硬件本身的限制。
其次是一些应用层面的。
如果是做图传,显示的硬件与ESP32是分离的,可以设置Camera以JPEG来传输图像,这样数据量低,同等时钟下,采集一张图片的速度会快很多。
实测:以FRAMESIZE_QVGA的设置下(320*240),PIXFORMAT_RGB565模式下图像的采集帧率大概是每秒钟13张左右,PIXFORMAT_JPEG模式下图像的采集帧率大概是每秒钟25张左右。

三、GUI相关的配置

影响GUI部分的刷新率主要是SPI的速率,之前SDK里面默认的应该是20MHz的频率,这样的速率一般的情况还好,但这里是用来刷新图像,每次都是对整屏进行刷新,因此SPI速度的快慢直接影响屏幕刷新率。所以也是简单的直接将SDK配置里的SPI速率提高到40MHz,这个其实已经超过显示IC规格书里面的最大的频率,而且实际看SPI SCK的波形已经失真严重了,但是竟然一切显示运行正常,也是万幸。
另外稍微注意一下,用来做图像显示的这个组件不要加别的处理了,例如翻转之类的,会大大影响速率。如果需要翻转、亮度调节的,可以直接设定图像传感器。

总结

提示:这里对文章进行总结:

最后实测了下,GUI刷新率能保持33帧。图像勉强可以看,主要还是受制于camera这块的采集速率,后面还有一些优化方法的也继续分享出来。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是eps32s3控制舵机旋转的代码,您可以根据自己的需要进行修改。 ```C++ #include <Servo.h> #define SERVO_PIN 5 // 定义舵机连接的引脚 #define SERVO_ANGLE 90 // 定义舵机的初始角度 #define SERVO_MIN_ANGLE 0 // 定义舵机的最小角度 #define SERVO_MAX_ANGLE 180 // 定义舵机的最大角度 Servo servo; // 创建舵机对象 void setup() { // 初始化串口 Serial.begin(9600); // 连接舵机 servo.attach(SERVO_PIN); // 将舵机旋转到初始角度 servo.write(SERVO_ANGLE); Serial.println("舵机已经初始化完成,请输入需要旋转的角度:"); } void loop() { if (Serial.available() > 0) { // 读取用户输入的角度 int angle = Serial.parseInt(); // 判断用户输入的角度是否合法 if (angle >= SERVO_MIN_ANGLE && angle <= SERVO_MAX_ANGLE) { // 如果合法,则控制舵机旋转到指定角度 servo.write(angle); Serial.println("舵机已经旋转到 " + String(angle) + " 度"); } else { // 如果不合法,则提示用户重新输入 Serial.println("请输入正确的角度(0~180):"); } // 清空串口缓冲区 while (Serial.available() > 0) { Serial.read(); } } } ``` 以上代码将会让舵机连接到控制器的引脚5号。如果你需要更改舵机连接的引脚,你需要修改SERVO_PIN常量的值。 初始角度是90度,但你可以在代码中修改SERVO_ANGLE常量,更改舵机的初始角度。最小角度和最大角度分别是0度和180度,也可以在代码中修改。 在代码中,支持以int类型的形式输入角度。当用户输入一个合法的角度值(0-180)时,代码会控制舵机旋转到指定角度,并通过串口将旋转的角度值和消息发送给用户。 希望这个回答对你有帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的Lunzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值