Ardunio Uno OLED I2C连接 相关


编译的过程,可能会遇到以下问题:

①提示错误

 

#error("Height incorrect, please fix Adafruit_SSD1306.h!");  

错误信息意思是指:

高度不正确,请修正Adafruit_SSD1306.h!

 

进入Arduino安装文件夹的libraries文件夹的Adfruit_SSD1306-master 找到Adafruit_SSD1306.h

 

打开此文件,找到第70行左右

 

默认是定义 SSD1306_128_32 ,由于我们使用的是128*64的OLED,所以,把原来的#define SSD1306_128_32,前面加上//

把#define SSD_128_64 前面的//去掉

最后就如上面图例一样

②模块的IIC 地址问题

模块的地址修改在这个位置,示例程序的61行

 

这个模块地址我用的是这个,但每个模块可能不一样,具体请咨询购买的商家,又或者可以参考下面的,IIC地址搜索程序。

IIC地址搜索程序

接线:

GND--GND(地线)

3.3V/5V--VCC(电源线,5V or 3.3v 电源不同显示效果有点差别,)

A4--SDA(I2C 数据线)

A5--SCL(I2C 时钟线)

代码:

//File Name:ScanI2CAddress.ino
#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 }

查看方法:

打开串口查看器,波特率9600.

查看到的0x**即为接口通讯地址.

用uno的要注意,SDA接A4端口和SCL接A5端口是接的AREF区域的接口,不要误会认为是接4和5号这两个IO口,这是错误的连接,应该是直接接板上analog in区域的A4和A5口,不要接错了。不过部分国产Uno开发板(!貌似还是有bug)或其它型号的开发板上直接就有标着有SDA、SCL的两个口,直接对标号连接即可。

为什么使用I2C接口?因为省IO口啊,只需要4条线。

接线图

 

在上代码之前,先下载两个库分别是

Adafruit SSD1306 Library:

https://github.com/adafruit/Adafruit_SSD1306

Adafruit GFX Library:

https://github.com/adafruit/Adafruit-GFX-Library

下载后把解压的文件放在 Arduino 安装目录里的 "libraries"

调出示例程序


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM