I2C OLED无法打开或显示

时间:2019-12-02 16:30:52

标签: arduino arduino-uno i2c led

我已经开始使用Arduino语言而不是pyFirmata版本。我正在使用Arduino UNO。我遇到了同样的问题,那就是OLED无法正常工作。我尝试了2种不同的OLED,其中一种来自UCTRONICS,另一种来自HiLetGo。它们都是I2C 128x64 OLED,UCTRONICS一种是黄色和蓝色,而HiLetGo一种是白色。我尝试了2种不同的代码,其中一种是我编写的,另一种是ssd1306库中的示例。没有错误,OLED只是不亮。该板与Alco连接到我用于同一项目的4个触摸传感器,但它们没有错(尚未)。我已经进行了一段时间的故障排除,并且能够查明错误的位置(可能是)。这是我的代码:(即使ssd1306 I2C 128x64示例也不起作用。)我也不希望建议使用那些我不需要的额外硬件,例如RTC(即使与之无关)是我能想到的唯一示例)这是我的代码:(即使ssd1306 I2C 128x64示例也不起作用。)

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
#define sw 128
#define sh 64
Adafruit_SSD1306 display(sw, sh, &Wire, OLED_RESET);

void setup() {
  Serial.begin(9600);
  Wire.begin();
  display.begin(SSD1306_SWITCHCAPVCC, 0x78);
  display.cp437(true);
  pinMode(A4, OUTPUT);


}

void loop() {
  digitalWrite(A4, HIGH);
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.println("test");
  Serial.println("test");
  digitalWrite(A4, LOW);

}

像往常一样,我只有1周的时间来解决此问题,因此帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

是的,这些显示可能非常烦人。我自己经历过。

首先,请访问供应商的网站,看看他们是否建议使用任何特定的库。我遇到的一些主要问题是:

  • 屏幕的电源电压不是您期望的标准5V,而是更高或更低。如果它更低,或者您提供5V到3.3V的电源,您甚至可能已经损坏或损坏了显示屏。
  • 您已接通SDA / SDL电线,忘记连接某些电线或接地不良。背光灯可以工作吗?
  • 库使用了错误的时钟速度
  • 显示器正在监听的I2C地址与库中使用的地址不同(这对我来说是最常见的地址)

答案 1 :(得分:0)

您的I2C地址设置似乎错误。 Arduino的Wire库(doc)使用7位地址。最后一位是读/写位,Wire自动处理。因此,您要截取最低有效位并将地址设置为0x3C而不是0x78

Adafruit_SSD1306库实际上使用0x3C作为默认地址。请参阅.h和.cpp文件中begin()的声明和注释。

有关更多信息,建议您查看SSD1306 data sheet。这是I2C数据格式。查看从站地址的格式。

enter image description here

答案 2 :(得分:0)

这不是每次都出现硬件故障时也要检查程序。加载示例测试程序,然后重试。 https://iotforgeeks.com/i2c-oled-display-not-working/帮助我解决了同一问题。