Maker_kun 发表于 2024-5-21 21:09

【FireBeetle 2 ESP32 C6评测】乐高太阳能储能系统——4驱动OLED显示系统参数

<div class='showpostmsg'> 本帖最后由 Maker_kun 于 2024-5-23 21:36 编辑

<p>一、OLED概述</p>

<p node="">OLED(有机发光二极管)是一种先进的显示技术,具有许多显著的优势和特点。以下是关于OLED的详细介绍:</p>

<p node="">OLED屏幕的工作原理是在两电极之间夹上有机材料层,这些材料在通过电流时会自发光。每个像素都可以独立控制,因此OLED屏幕能够实现更深的黑色和更高的对比度。</p>

<ol>
        <li>
        <p node=""><strong>优点</strong>:</p>

        <ul>
                <li><strong>响应速度</strong>:OLED屏幕具有更快的响应速度,适用于观看高速视频和玩游戏等场景。</li>
                <li><strong>对比度</strong>:OLED屏幕在显示黑色时只需关闭相应的像素,而不需要背光,因此能够实现更高的对比度。</li>
                <li><strong>可视角度</strong>:OLED屏幕的可视角度更广,用户在不同角度观看时都能获得良好的显示效果。</li>
                <li><strong>厚度和柔性</strong>:由于OLED屏幕结构简单,不需要背光层,因此可以做到更薄甚至是柔性。</li>
                <li><strong>功耗</strong>:OLED屏幕在显示黑色时几乎不消耗电力,因此整体功耗较低。</li>
                <li><strong>色域和亮度</strong>:OLED屏幕通常具有更大的色域和更高的亮度,带来更加鲜艳清晰的色彩表现。</li>
        </ul>

        <p node="">OLED技术广泛应用于智能手机、智能穿戴设备、电视和其他移动终端设备。其中,智能手机是最大的OLED应用领域,占比达到73%。</p>

        <p node="">OLED市场规模持续增长,预计2024年将达到516.3亿美元,并在2029年进一步扩大到959.3亿美元。中国OLED产业也在快速发展,产能不断提升,市场份额逐步逼近国际巨头如三星。</p>

        <p node="">OLED技术未来的发展趋势包括更大尺寸的屏幕、更高分辨率(如8K)、以及更多的创新应用,如柔性显示和透明OLED屏幕。此外,随着技术的进步和成本的降低,OLED屏幕将在更多设备中得到广泛应用。</p>
        </li>
</ol>

<p node="">综上所述,OLED技术以其独特的优势和广泛的应用前景,正在逐步成为显示技术的主流方案。</p>

<p node="">&nbsp;</p>

<p>二、esp32驱动0.96OLED</p>

<p>怎么简单怎么来,程序月简单越好</p>

<p>首先下载驱动库:esp32驱动0.96OLED,打开arduino库管理,搜索<span style="color:#e74c3c;"><strong>SSD1306</strong></span>,找到<span style="color:#27ae60;"><strong>ESP8266 and ESP32 OLED driver for SSD1306 displays</strong></span>安装即可</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>代码如下:</p>

<pre>
<code>/*
安装库
ESP8266 and ESP32 OLED driver for SSD1306 displays@4.3.0

*/
#include &lt;Wire.h&gt;
#include "SSD1306.h"

SSD1306 display(0x3c, SCL, SDA);

void setup() {
display.init();//初始化
display.setFont(ArialMT_Plain_16);//设置字体
display.drawString(0, 0, "Hello World");//显示字符串
display.display();//显示
}

void loop() {

}</code></pre>

<p>三、下载编译</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>参考案例:<a href="https://blog.csdn.net/weixin_42854045/article/details/127310228" target="_blank">https://blog.csdn.net/weixin_42854045/article/details/127310228</a></p>

<p>&nbsp;</p>

<p>四、显示电压参数</p>

<p>&nbsp;</p>

<pre>
<code>
/* 使用0.96寸的OLED屏幕需要使用包含这个头文件 */
#include "SSD1306Wire.h"

#include &lt;Battery.h&gt;
Battery battery(3400, 4200, 0, 12);



/* 设置oled屏幕的相关信息 *///有一些引脚接口不支持I2C
const int I2C_ADDR = 0x3c;            // oled屏幕的I2c地址
#define SDA_PIN SDA                     //
#define SCL_PIN SCL                     //

/* 新建一个oled屏幕对象,需要输入IIC地址,SDA和SCL引脚号 */
SSD1306Wire oled(I2C_ADDR, SDA_PIN, SCL_PIN);
//测试屏幕显示
void drawRect(void) {
for (int16_t i=0; i&lt;oled.getHeight()/2; i+=2) {
    oled.drawRect(i, i, oled.getWidth()-2*i, oled.getHeight()-2*i);
    oled.display();
    delay(50);
}
}

void setup() {
Serial.begin(115200); //串口频率
analogReadResolution(12); // switches ADC resolution to 12 bits
        battery.begin(4200, 2, &amp;asigmoidal);

// put your setup code here, to run once:
/*oled屏幕初始化 */
oled.init();
oled.flipScreenVertically();          // 设置屏幕翻转
oled.setContrast(255);                // 设置屏幕亮度
drawRect();                           // 测试屏幕显示
oled.clear(); oled.display();         // 清除屏幕
}

void loop() {

float h = 3;
float t = 4;
// put your main code here, to run repeatedly:
/*显示字母 */
oled.setFont(ArialMT_Plain_16);       // 设置字体

oled.clear(); oled.display();
oled.drawString(0,0, "Voltage:" +String(battery.voltage())+"mV"); // 将要显示的字母写入缓存
oled.drawString(0,20, "POWER:"+String(battery.level())+"%"); // 将要显示的字母写入缓存

oled.display();                     // 将缓存里的文字在屏幕上显示



}
</code></pre>

<p>效果展示:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2024-5-24 07:27

<p>楼主的测试,最后的图片是展示了电池电压和电量百分比,不错</p>

Maker_kun 发表于 2024-5-24 08:26

Jacktang 发表于 2024-5-24 07:27
楼主的测试,最后的图片是展示了电池电压和电量百分比,不错

<p>电池运行7小时后的效果,等待验证电池容量显示是否有问题</p><br/>

chejm 发表于 2024-5-24 12:00

<p>楼主分享的技术内容非常具有参考价值,希望能为今后的项目提供参考方向</p>

Maker_kun 发表于 2024-5-25 13:58

chejm 发表于 2024-5-24 12:00
楼主分享的技术内容非常具有参考价值,希望能为今后的项目提供参考方向

<p>Arduino的库非常丰富,大家一块探索探索:):)</p><br/>
页: [1]
查看完整版本: 【FireBeetle 2 ESP32 C6评测】乐高太阳能储能系统——4驱动OLED显示系统参数