查看: 51286|回复: 67

《博哥OLED系列》- 玩转SSD1306-12864 OLED

  [复制链接]

该用户从未签到

发表于 2017-9-24 21:07 | 显示全部楼层 |阅读模式
本帖最后由 单片机菜鸟 于 2019-7-4 09:45 编辑

个人免费交流群:ESP物联网开发之旅 622368884

一、前言
      
      之前博哥在写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, 下载次数: 1838)

该用户从未签到

 楼主| 发表于 2017-9-24 21:07 | 显示全部楼层
楼主做好冷板凳

该用户从未签到

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

该用户从未签到

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

哈哈哈  赶紧用起来

该用户从未签到

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

该用户从未签到

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

感谢美女支持

该用户从未签到

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

该用户从未签到

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

哈哈哈  我的笔名有

该用户从未签到

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

该用户从未签到

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

看看UN的I2C总线
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

arduino程序设计基础 blinker物联网解决方案

热门推荐

关于红外的求助
关于红外的求助
为什么红外发射出的跟我设定的不一样,如图,我两个板子一个发射,一个接收,我想要发
【Arduino】168种传感器模块系列实验(104)---MAX30102手腕心率
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
[Arduino物联网开发实战5]云端历史数据存储与查看
[Arduino物联网开发实战5]
blinker提供了历史数据存储与图表查看数据的功能。 设备端开发 在blinker的设计下,设
程序卡着不动,最后打印Freeheap 25427
程序卡着不动,最后打印Fr
各位有见过这个错误吗,程序跑到这里卡着不动
通过定时器读取串口数据出错
通过定时器读取串口数据出
各位大佬好,本人通过树莓派和Arduino通信,一边接收Arduino传感器数据,一边给Arduin
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表