【NodeMCU-ESP8266】Afafruit_ssd1306点亮096OLED屏(4P,I2C)——避坑经验分享

本文详细介绍了如何使用NodeMCU开发板配合0.96寸OLED屏幕,包括硬件准备、安装必要的第三方库如Adafruit_SSD1306、Adafruit-GFX-Library和AdafruitBusIO等,以及如何通过I2C连接和编写示例程序显示系统时间和日期。
摘要由CSDN通过智能技术生成

一、硬件清单

1、NodeMCU 1.0 开发板1块
2、0.96寸128*64分辨率OLED,4PIN,I2C接口,SSD1306驱动芯片

3、400孔面包板1块
4、杜邦线若干

二、安装第三方库

        1、Adafruit_SSD1306库
        (1)这是一个基于SSD1306驱动芯片的单色OLED第三方库,主要用于单色的分辨率为128x64 and 128x32 OLED屏幕。
        (2)支持SPI和I2C协议,适用于2~5个引脚的接口。
        (3)安装方法。首选Arduino IDE库管理器。其次,可以点击Github官方下载链接,请单击页面“克隆或下载”,然后单击“下载ZIP”。解压缩后,将生成的文件夹重命名为Adafuit_SSD1306。检查Adafruit_SSD1306文件夹是否包含Adafruit _SSD1306.cpp和Adafruits _SSD1306.h。最后,提供百度网盘下载链接,  提取码:nrhb。
        (4)需要同时安装父类库Adafuit GFX,该库提供线条、圆圈、文本等图形元素。
        2、Adafruit-GFX-Library-1.11.9库
        (1)这是Afafruit所有显示器的核心图形库,提供了一组通用的图形基元(点、线、圆等)。它需要与对应显示设备的硬件专用库配对(以处理较低级别的功能)。
        (2)安装方法。首选Arduino IDE库管理器。其次,可以点击Github官方下载链接,请单击download ZIP按钮,解压缩并重命名未压缩的文件夹Adafuit_GFX。确认Adafruit_GFX文件夹包含Adafruit _GFX.cpp和Adafrupt_GFX.h。将Adafrupt _GFX库文件夹放在您的ArduinoSketchFolder/Libraries/文件夹中。最后,提供百度网盘下载链接,  提取码:lvj8。
        3、Adafruit BusIO库
        
(1)用于I2C和SPI通信协议抽象的Arduino库。
        (2)安装方法。首选Arduino IDE库管理器,在库管理器中搜索“Adafuit BusIO”直接安装。 其次,可以点击Github官方下载链接。最后,提供百度网盘下载链接,  提取码:kexu。
        4、NTPClient库
        (1)用于连接到一个NTP服务器。
        (2)安装方法。首选Arduino IDE库管理器,在库管理器中搜索“NTPClient”直接安装。 其次,可以从Github官方链接直接下载。最后,提供百度网盘下载链接,  提取码:91mn。       

三、开发板与OLED屏引脚连接对应关系

NodeMCU开发板与0.96寸OLED引脚连接对应关系
NodeMCU开发板0.96寸OLED
GNDGND
3V3VCC
SCLD1 (GPIO5)
SDAD2 (GPIO4)

四、使用官方示例,点亮OLED屏幕

        1、按照下图所示,开启官方示例程序。

        2、将程序中高亮部分第35行(行号可能会不同):#define SCREEN_ADDRESS 0x3D,改写成:#define SCREEN_ADDRESS 0x3C。 如果不改写,屏幕可能无法如期点亮。

        3、点亮屏幕视频演示
 

ssd1306_12684_I2C演示视频

五、关于改写屏幕地址的特别提醒和说明——避坑经验分享

        使用I2C接口时,SSD1306允许有最多两个7位的I2C地址, 同样通过相应的IO口拉低拉高来切换,一般默认是0x3C。在有些模块PCB的背面,,可以看到 I2C地址选项的丝印,需要改变模块I2C地址时,只需要把丝印标识位置的电阻取下来,焊接到另外留空的一端即可。如下图所示:

特别要提醒的是:OLED屏幕PCB背面的I2C地址,是加上了I2C第零位,即方向读写位后的数值。
   如:0x78 = 0x3C<< 1(0111 1000 <<---- 0011 1100),第0位为0时,表示MCU向OLED写数据
          0x7A = 0x3D<< 1(0111 1010 <<---- 0011 1101),第0位为1时,表示MCU从OLED读数据
        对于本例OLED屏,设置第0位为0才能正常工作。所以,需要将屏幕地址改写成:0x3C

六、示例程序:使用096寸4引脚OLED屏幕显示系统日期和时间

        该程序通过UDP协议访问阿里云NTP时间服务器,提取系统时间换算成北京时区日期和时间,显示在OLED屏幕上。附上该程序SSD1306_clock的完整代码,请点击下载,  提取码:tsqf。
        特别提醒:编译上传该程序前,请修改成自己可用的WIFI路由器名称和密码。

ssd1306_12864OLED_I2C演示视频

  • 29
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值