查看: 21331|回复: 39

[教程] 《博哥OLED系列》- 玩转SSD1306-12864 OLED

[复制链接]
  • TA的每日心情
    开心
    2019-1-16 10:26
  • 签到天数: 583 天

    [LV.9]以坛为家II

    发表于 2017-9-24 21:07 | 显示全部楼层 |阅读模式
    本帖最后由 单片机菜鸟 于 2018-8-27 20:15 编辑

    一、前言      
          之前博哥在写ESP8266系列的时候,基本上都是通过Debug模式来获取8266 IP地址。这样就会存在一个问题,在正式环境下我们一般都会关掉debug,那么我们又如何能直观地观察当前8266的工作状态呢?既然这样,不如我们给它配上一个小的显示屏吧,然后博哥就去tb弄了一块SSD1306-12864的OLED显示屏。刚好今天又是周末,不用上班的感觉真好,果断折腾一下这个模块。
          模块就长这个样子:
           LC}T9YI9~AO[(2XJPOJAFMT.png
          简洁点,有以下基本步骤:接下来,要分别烧写两个端的代码,
          这款屏幕尺寸约为0.96英寸,由SSD1306驱动,驱动接口I2C,I2C地址(0x3c 默认/0x3d)。


          注意点:
          1.ssd1306本身支持多种总线驱动,我这里是I2C,也有是SPI的
          2.使用I2C接口,SSD1306允许有最多两位7位的I2C地址,通过相应的IO口拉低拉高来切换,一般默认为0x3c,在屏幕模块的背面,可以看到I2C地址切换提示,需要改变模块I2C地址时,只需要把提示位置的电阻取下焊接到另一个端,要注意的是板上的I2C地址是经过左移一位的数值,也就是说0x78 = 0x3c<<1, 0x7A = 0x3d << 1;
           B28LS0EIL~$EUBM${(QNR13.png

         SSD1306屏幕驱动库,最出名应该就是u8g2。但是博哥这里并不用它,改为用Adafruit_GFX 和 Adafruit_SSD1306。
         那么这两个库有什么关系呢?博哥去大概看了一下里面的源码,大家可以看看这两个图:
          }F5(V3[J[_WY6FOWS}R6YEN.png
           {1PG9IV}MIS3$IL(0`)GIN1.png

          可以看出Adafruit_GFX 定义了一系列的绘画方法(线,矩形,圆....),属于基础类,并且最重要的一点,drawPixel方法由子类来实现。
        Adafruit_SSD1306 定义了一系列跟SSD1306有关的方法,并且重写了drawPixel方法,属于扩展类。

         请先添加这两个库到arduino:
           Adafruit_GFX.rar (8.04 KB, 下载次数: 749)
    打赏作者鼓励一下!
  • TA的每日心情
    开心
    2019-1-16 10:26
  • 签到天数: 583 天

    [LV.9]以坛为家II

     楼主| 发表于 2017-9-24 21:07 | 显示全部楼层
    楼主做好冷板凳
    打赏作者鼓励一下!
  • TA的每日心情
    慵懒
    2019-1-16 09:20
  • 签到天数: 687 天

    [LV.9]以坛为家II

    发表于 2017-9-25 08:48 | 显示全部楼层
    楼主威武,膜拜中!
    打赏作者鼓励一下!
  • TA的每日心情
    开心
    2019-1-16 10:26
  • 签到天数: 583 天

    [LV.9]以坛为家II

     楼主| 发表于 2017-9-25 13:35 | 显示全部楼层
    leisd 发表于 2017-9-25 08:48
    楼主威武,膜拜中!

    哈哈哈  赶紧用起来
    打赏作者鼓励一下!

    该用户从未签到

    发表于 2017-9-28 10:00 | 显示全部楼层
    博哥第一粉来了,先评再看哈哈
  • TA的每日心情
    开心
    2019-1-16 10:26
  • 签到天数: 583 天

    [LV.9]以坛为家II

     楼主| 发表于 2017-9-28 11:06 | 显示全部楼层
    汇研 发表于 2017-9-28 10:00
    博哥第一粉来了,先评再看哈哈

    感谢美女支持
    打赏作者鼓励一下!
  • TA的每日心情
    开心
    2017-11-17 11:09
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2017-10-1 18:41 | 显示全部楼层
    楼主讲得很好,名字中如果也有博字那我俩太有缘分了。顶了。
  • TA的每日心情
    开心
    2019-1-16 10:26
  • 签到天数: 583 天

    [LV.9]以坛为家II

     楼主| 发表于 2017-10-1 19:04 | 显示全部楼层
    ynqjwfb 发表于 2017-10-1 18:41
    楼主讲得很好,名字中如果也有博字那我俩太有缘分了。顶了。

    哈哈哈  我的笔名有
    打赏作者鼓励一下!

    该用户从未签到

    发表于 2017-10-19 21:06 | 显示全部楼层
    楼主,请教oled 和 UN怎么接线的?
  • TA的每日心情
    开心
    2019-1-16 10:26
  • 签到天数: 583 天

    [LV.9]以坛为家II

     楼主| 发表于 2017-10-19 22:51 | 显示全部楼层
    阵中人 发表于 2017-10-19 21:06
    楼主,请教oled 和 UN怎么接线的?

    看看UN的I2C总线
    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    关于arduino编译问题
    关于arduino编译问题
    编译示例程序老是这个问题,换了电脑都不行
    莫名乱码 —— Arduino+RFID-RC522 读写实验
    莫名乱码 —— Arduino+RF
    目标:想把自己房间门改成感应门锁 器材:Arduino Uno (淘宝七星虫LY-F2)、RFID-RC
    [blinker开发实战2]数据反馈
    [blinker开发实战2]数据反
    [md] ### 添加DIY组件 在编辑模式下,点击按键进入编辑组件页面,可以看到 **按键
    用Arduino控制PS2无线手柄为什么一直连接不上
    用Arduino控制PS2无线手柄
    用Arduino UNO板 连接PS2手柄接收器,为什么指示灯已经显示对接上了,但是打开串口监
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表