zoukankan      html  css  js  c++  java
  • I2C 连接 12864 OLED 屏幕

    http://ardui.co/archives/738

    我是潘,曾经是个工程师。这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程。上一课介绍了I2C 协议连接1602 LCD。现在我们将屏幕升级到更强大的12864 OLED(也称“1306”),让交互界面更加丰富。有任何疑问请在评论区提出,我会逐一回答。

    1602 LCD 限制很多,只能显示字符不能绘图,而且每个字符的像素是分隔的,一般用在简单的交互设备上,比如显示电压、温度等。而 12864 OLED,则是一块功能完整屏幕,想象一下早期的诺基亚手机,利用这块屏幕还可以设计一些像贪吃蛇等简单游戏。

    首先,12864 OLED 屏幕有 I2C 和 SPI 两种通信协议的模组,由于协议不同,所以完全不兼容。这次使用的是 I2C 协议的模组,SPI 协议后面会介绍。不过,可以提前剧透一下,I2C 和 SPI 性能和扩展性有很大差异,在产品设计开发过程中,选用哪一种将是一场艰难的选择。

    回到正题,与 1602 LCD 的命名不同(“16”代表16个字符,“2”代表2行),12863 的含义是 128 X 64 个像素,这些像素都是连续的,可以构成不同的字符或者图形。OLED 意味着面板的显示方式是 发光二极管。但 12864 也是一款单色的屏幕,所以每个像素就是一个二极管,而不是彩色的 3~4 个(一些OLED 屏幕会在 RGB 之外增加 W 白色二极管,从而提升对比度和亮度)。

    一般屏幕是横向使用的,128 个像素横向排列在 X 轴上,分别以 0~127 来代表,64个像素垂直排列在 Y 轴上,分别以 0~63 来代表。

    按照 I2C 方式接线即可:
    SCL 接到 A5
    SDA 接到 A4
    VCC、GND 分别接 VCC 和 GND

    驱动这块屏幕要用到 U8g2 库,可以直接从 IDE 的库管理器中下载。这个库功能非常强大,除了能驱动 12864 外,还能驱动市面上大部分常用的LCD/OLED。而且能方便地调节字体的大小、间距,还可以显示比较复杂的动态图形。

    安装好后,打开示例程序,找到 “U8g2 -> full_buffer ->  HelloWorld” :

    让人崩溃的注释,但只要找到对应的模块:U8G2_SSD1306_128X64_NONAME_F_SW_I2C,对于 Arduino UNO 选择标注有 SCL、SDA 即可(第21行),把注释去掉,其他注释内容就能删除掉。现在,上传程序到 Arduino 就可以工作了:

    但我们并不满足静态的文字,现在要让文字动起来,让Hello World 自上而下循环滚动,此时就要用到坐标系:

     按照 I2C 方式接线即可:

    不用对接
    SCL 接到 A5
    SDA 接到 A4
    VCC、GND 分别接 VCC 和 GND

    贴出了一个寻找设备地址的代码 

     https://blog.csdn.net/ling3ye/article/details/51542424

    https://blog.csdn.net/ling3ye/article/details/53399305

    相关开源代码:
    程序与库与软件打包下载:https://u16460183.ctfile.com/fs/16460183-296052219

    文件夹说明:

    Adafruit_SSD1306-master   ——SSD1306库(OLED的主要库文件,库请复制在Arduino的库目录下)

    Adafruit-GFX-Library-master  —— GFX库(是一种图形库)

    字模提取V2.2   —— 可以生成中文字点阵变量的软件

    LS_PrintChinese —— 主程序



    可能有人好奇这些乱七八糟的怎么来的?↓

    这其实就用到  字模提取V2.2  的软件了,

    分享地址:http://pan.baidu.com/s/1i50UmxB

    打开软件,具体操作如下:

     

    把点阵生成的数组,套入程序的相关变量,调用相关的函数就可以实现显示中文。

    其实取模软件,就是把中文字转换成点阵,实现在没有中文字库程序中显示中文。

    我想有字库的也是这样的点阵库,如有理解错误请指出。



  • 相关阅读:
    POJ 1251 换成字母编号的最小生成树
    POJ 2421 有一条连通下的最小生成树
    最小生成树-Prim算法和Kruskal算法
    POJ 3083 相对位置的DFS的变形和BFS
    POJ 3278 抓牛简单广搜
    POJ 2488 DFS 模拟 马的跳动
    POJ 1572 字符串替换
    POJ 3984 迷宫问题 BFS+记录路径
    解救人质 BFS模板(迷宫问题)
    解救人质 DFS简单模板
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/10810219.html
Copyright © 2011-2022 走看看