网上找了下12864和12832的区别,仅找到一篇内容理想些的:《用12864程序驱动12832(SSD1306)》
以上链接中明确指出:
12832的row0,row1,row2......row31分别对应12864的row0,row2,row4......row62
相当于12832展示的为12864的偶数行,可是我将内容映射到偶数行上的时候(奇数行无数据,将原来奇数行的数据也放到偶数行上进行展示),结果啥都不展示。
然后我试了一下将所有内容映射到奇数行(偶数行无数据,将原来偶数行的数据放到奇数行上进行展示),xx,结果正常展示了。相当于以上链接给出的结论可能有问题(也可能是我oled初始化的时候做了什么手脚,如果大家有了解的请不吝赐教),我实验得出的结论应该是:
12832的row0,row1,row2......row31分别对应12864的row1,row3,row5......row63
驱动oled的代码仍然参考我的上一篇内容:
所要做的只是将原来12864的所有内容映射到奇数行,改动点:
原来github的驱动代码为:Font.java
for (int j = 0; j < height; ++j) {
if ((line & 0x01) > 0) {
display.setPixel(x + i, y + j, on);
}
line >>= 1;
}
改动为:
for (int j = 0; j < height * 2; j += 2) {
if ((line & 0x01) > 0) {
display.setPixel(x + i, 1 + 2 * y + j, on);
}
line >>= 1;
}
Maven打包好工程之后,丢jar包到树莓派上,运行jar包:
java -jar oled-0.0.1-SNAPSHOT.jar
即可看到12832上正常展示了。
另:
我的改动方式是将所有内容迁移到奇数行上进行展示,而《用12864程序驱动12832(SSD1306)》 中提到,12864的展示切换到12832上,只需要修改ssd1306将数据映射在屏幕上的方式,只涉及到三个命令。这3个命令我还没试过,而且链接中讲的也比较模糊,稍后我试下这种方法,没准比我这种方式更好用灵活~
欢迎讨论~