Arduino SSD1306 OLED(IIC)显示屏初始化点亮 | MacOS

IIC(Inter-Integrated Circuit)其实是IICBus(集成电路总线)简称,它是一种串行通信总线,使用多主从架构。

其一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。

I2C接口在Arduino的 Wire-library. 中被预先定义好:
// On an arduino UNO: A4(SDA), A5(SCL)
// On an arduino MEGA 2560: 20(SDA), 21(SCL)
// On an arduino LEONARDO: 2(SDA), 3(SCL),

屏幕尺寸约为0.96英寸,由SSD1306驱动,驱动接口I2C,I2C地址
(默认0x3c /有的为0x3d)。

不同型号的屏幕可能有不同的通信地址,为了确认自己的I2C地址,可通过以下程序进行查询(最好扫描一下,以防出错):

#include <Wire.h>  
   
void setup(){  
  Wire.begin();  
  Serial.begin(9600);  
  Serial.println("\nI2C Scanner");  
}  
void loop(){  
  byte error, address;  
  int nDevices;  
  Serial.println("Scanning...");  
  nDevices = 0;  
  for (address = 1; address < 127; address++ ){  
    // The i2c_scanner uses the return value of  
    // the Write.endTransmisstion to see if  
    // a device did acknowledge to the address.  
    Wire.beginTransmission(address);  
    error = Wire.endTransmission();  
    if (error == 0){  
      Serial.print("I2C device found at address 0x");  
      if (address < 16)  
        Serial.print("0");  
      Serial.print(address, HEX);  
      Serial.println(" !");  
      nDevices++;  
    }else if (error == 4){  
      Serial.print("Unknow error at address 0x");  
      if (address < 16)  
        Serial.print("0");  
      Serial.println(address, HEX);  
    }  
  }  
  if (nDevices == 0)  
    Serial.println("No I2C devices found\n");  
  else  
    Serial.println("done\n");  
  delay(5000); // wait 5 seconds for next scan  
} 

上传成功后在串口监视器可查看该屏幕的地址值
手中这块屏幕地址为0x3C
!!编程之前需要添加Adafruit_SSD1306和Adafruit_GFX这两个库文件

在arduino IDE菜单栏中项目——加载库——管理库 中搜索SSD1306,

选择Adafruit_SSD1306,可直接进行安装,此时会弹出一个提醒栏让你一起安装Adafruit_GFX,一步到位
在这里插入图片描述在这里插入图片描述
而后即可在示例中找到对应屏幕的代码,打开上传即可看到动画效果在这里插入图片描述

在这里插入图片描述


版权声明:本文为qq_41361526原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。