使用nodemcu玩转物联网系列(十):使用取模工具,将汉字或图片显示在oled屏幕上

OLED相关材料参照文章:[esp8266学习笔记⑨:OLED 屏幕的使用(u8g2图形库模块)

在这里插入图片描述

下边重点说说这OLED的取模了:

使用nodemcu玩转物联网系列(十):使用取模工具,将汉字或图片显示在oled屏幕上_第1张图片
什么鬼?摄氏度不是℃这样吗????!!显示不了~所以用取模软件。
1、软件推荐:PCtoLCD2002
链接:https://pan.baidu.com/s/1OudV036tlNMI4yzJ4mJDZg
提取码:2rt9
2、设置:
第一种:字符模式
使用nodemcu玩转物联网系列(十):使用取模工具,将汉字或图片显示在oled屏幕上_第2张图片
使用nodemcu玩转物联网系列(十):使用取模工具,将汉字或图片显示在oled屏幕上_第3张图片
使用nodemcu玩转物联网系列(十):使用取模工具,将汉字或图片显示在oled屏幕上_第4张图片
下边这是最关键的一步,瞪起眼来看好了!!!
使用nodemcu玩转物联网系列(十):使用取模工具,将汉字或图片显示在oled屏幕上_第5张图片
使用nodemcu玩转物联网系列(十):使用取模工具,将汉字或图片显示在oled屏幕上_第6张图片
代码:

--针脚
sda = 5
scl = 6
i=0
--字符宽和高
width = 16
height = 16

bits = string.char(--sting.char()方法,文章结尾有理解
--下边就是字模
0x06,0x00,0x89,0x2F,0x69,0x30,0x36,0x20,
0x10,0x20,0x18,0x00,0x18,0x00,0x18,0x00,
0x18,0x00,0x18,0x00,0x18,0x00,0x10,0x00,
0x30,0x20,0x60,0x10,0x80,0x0F,0x00,0x00
)
--oled初始化函数
function init_OLED(sda,scl)
     sla = 0x3c
     i2c.setup(0, sda, scl, i2c.SLOW)
     disp=u8g2.ssd1306_i2c_128x64_noname(0,sla)--oled型号可更改
     disp:setFont(u8g2.font_6x10_tf)--字体可更改
     disp:setFontPosTop()--置于顶部
end
--显示到oled上
function print_OLED()
		--是否显示背景色
       disp:setDrawColor(1)
       disp:setBitmapMode(0)
       disp:setFont(u8g2.font_6x10_tf)
       --绘制字符
       disp:drawXBM(26,0,width,height,bits)
       disp:sendBuffer()
end

init_OLED(sda,scl)
tmr.create():alarm(100,tmr.ALARM_AUTO, function()
    print_OLED()
end)

第二种:图形模式
参照:博客https://blog.csdn.net/claylovetoo/article/details/97139511
注意两点:其他同上文
(1)设置稍有变化
使用nodemcu玩转物联网系列(十):使用取模工具,将汉字或图片显示在oled屏幕上_第7张图片
(2)图片格式转小,且保存为“单色bmp”格式。传上去直接惨不忍睹。
使用nodemcu玩转物联网系列(十):使用取模工具,将汉字或图片显示在oled屏幕上_第8张图片

关于string.char()方法的简单理解:
string.char()
•解释:接收0个或者多个参数,返回一个字符串,字符串长度等于参数个数,前提是每一参数作为ASCII码都有一个字符与之相对应,也就是说大部分的数字是无效的,这个函数参数的ASCII码在跨平台方面不一定是可移植的。

简单的一句话就是: 将ASCII码转化为字符串中对应字符的函数,在功能上与函数string.byte()是互逆的。

你可能感兴趣的:(nodemcu)