【星闪】OLED灯保姆级别教程
本文是星闪开发板的OLED的小案例,用的开发编译器是Hispark Studio,本文包括图片、图片编辑、图片格式转换、图片取模、关键代码、配置代码,希望对你有所帮助。
系列文章目录
前言
前不久加入了一个大佬创立的星闪的社区,私下交流中,了解到星闪协议的一些内容,看了大佬关于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产品,比如户外大屏、橱窗数字标牌、指引屏等等。有什么没有涉及到的问题,可以留言或私信。
更多推荐

所有评论(0)