系列文章目录



前言

前不久加入了一个大佬创立的星闪的社区,私下交流中,了解到星闪协议的一些内容,看了大佬关于OLED的demo,感觉描述的还是不够细节,跳过了许多步骤,容易造成误解,不适合小白,我作为一个小白,深知入门开发的细节一笔带过可能需要尝试很多次才能成功,而且使用oled屏幕的demo打印信息、便于调试,调试oled屏幕是开发过程中十分重要的能力,所以今天写一篇关于OLED灯保姆级别教程。
社区如下:星闪开发社区,加入可能需要审核。
之前大佬的文章:星闪开发入门之一篇文章带你玩转OLED灯


一、图像处理

由于oled屏幕的大小是128*64像素、单色显示,所以需要预先处理一下图像,否则会出现显示不全、取模软件无法识别图像等问题。

具体处理细节如下:(计蒙哥直接一笔带过,问大佬要了一些星闪技术资料)

请添加图片描述

请添加图片描述

请添加图片描述
因为oled屏幕的屏幕大小为128*64像素
请添加图片描述
点击另存为(不要选择其他格式,具体格式如下)

请添加图片描述
单色位图能够被取模软件识别,并成功取模。


二、图像取模

使用取模软件对处理完的图片取模处理,具体处理步骤如下

请添加图片描述

请添加图片描述

请添加图片描述
这里要注意设置正确,否则字模乱码,无法实现图像显示
请添加图片描述
请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

三、关键代码【Hispark Studio】—— IDE

TXT文件中的字模复制到以下函数中替换,注意{}括号 ;分号的个数,否则会编译失败。

void picture(void)
{
   uint8_t photo[][1024]={{
0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF8,0x00,0x3F,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF8,0x00,0x3F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
0x00,0x00,0x00,0x00,0x77,0xFF,0xFF,0xF8,0x00,0x3F,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x6F,0xFF,0xFF,0xF8,0x00,0x1F,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0xCF,0xFF,0xFF,0xF8,0x00,0x1F,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x9F,0xFF,0xFF,0xF8,0x00,0x17,0xEF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x9F,0xFF,0xFF,0xF8,0x00,0x17,0xEF,0xFF,0xFF,0xF0,0x00,0x00,
0x00,0x00,0x00,0x00,0xBF,0xFF,0xFD,0xD8,0x00,0x13,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0xD8,0x00,0x3F,0xC6,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xB8,0x00,0xFF,0x06,0x7F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFC,0x01,0xFF,0x64,0x7F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF9,0xFF,0x00,0x62,0x04,0x3F,0xFF,0xF8,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFE,0x80,0x82,0x7F,0xBF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xE8,0x01,0x40,0x3F,0xFF,0x1F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFE,0x20,0x07,0x82,0x3F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF6,0x20,0x07,0xCC,0x3F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x79,0xE0,0x20,0x00,0x00,0x3F,0xFF,0xF0,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFF,0x44,0x00,0x20,0x00,0x00,0x7F,0xEF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x00,0x00,0x20,0x00,0x00,0x7F,0xE7,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xC0,0x00,0x20,0x00,0x00,0xFF,0xE7,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x80,0x00,0x20,0x00,0x00,0xBF,0xC7,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x80,0x00,0x20,0x00,0x00,0x7F,0xE7,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x1D,0xFF,0xC0,0x00,0x20,0x00,0x00,0x7F,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0xFF,0xE0,0x00,0x60,0x00,0x00,0xFD,0xCF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xFB,0xF0,0x00,0x30,0x00,0x00,0xFB,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x7B,0xE0,0x00,0x10,0x00,0x03,0x13,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x3E,0xF0,0x00,0x00,0x00,0x00,0x06,0x7C,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3B,0xC0,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0xF0,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xE0,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x30,0x00,0x00,0x00,0x00,0x1F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x98,0x00,0x00,0x00,0x00,0x3F,0xF3,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x00,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x00,0x01,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,0x03,0x7F,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0xFD,0x80,0x00,0x00,0x07,0x7F,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xC0,0x00,0x00,0x0D,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFD,0x70,0x00,0x00,0x12,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFD,0x58,0x00,0x00,0x2C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x2E,0x00,0x00,0xD8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF9,0x23,0x00,0x03,0x71,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x9D,0xC0,0x0C,0xE0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x18,0xBC,0x70,0x30,0x40,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x1E,0xE0,0x80,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xC7,0x0E,0x00,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFE,0x08,0x00,0xE1,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xF0,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF8,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x03,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xEB,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xF5,0xFF,0xFF,0xFF,0xFF,0x7F,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x7F,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0xFD,0xF8,0x00,0x00,0x00,0x00
   }};
   ssd1306_DrawBitmap(photo[0],sizeof(photo));
    

}
    while(1){
        ssd1306_SetCursor(0, 0);
        picture();
    // ssd1306_DrawString("just do it", Font_7x10, White);
        ssd1306_UpdateScreen();
        }

四、配置代码

编辑fbb_ws63-master\src\application目录下CMakeLists.txt 、Kconfig文件
请添加图片描述

首先编辑CMakeLists.txt。

请添加图片描述

在文件最后部分但不是最后一行添加,代码如下:

if(DEFINED CONFIG_SAMPLE_SUPPORT_OLED)
    add_subdirectory_if_exist(oled)
endif()

请添加图片描述
注意:
要写在set(SOURCES "${SOURCES}" PARENT_SCOPE) 代码行以上
add_subdirectory_if_exist(oled)(oled)fbb_ws63-master\src\application目录下的文件夹名称


请添加图片描述

代码如下:

config SAMPLE_SUPPORT_OLED
    bool
    prompt "Support OLED Sample."
    default n
    depends on ENABLE_PERIPHERAL_SAMPLE
    help
        This option means support OLED Sample.

注意:OLED的名称一致。


五、效果图【星闪开发板】

请添加图片描述


总结

在日常生活中,能够接触到很多关于LED产品,比如户外大屏、橱窗数字标牌、指引屏等等。有什么没有涉及到的问题,可以留言或私信。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐