我已经开始使用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周的时间来解决此问题,因此帮助将不胜感激。
答案 0 :(得分:0)
是的,这些显示可能非常烦人。我自己经历过。
首先,请访问供应商的网站,看看他们是否建议使用任何特定的库。我遇到的一些主要问题是:
答案 1 :(得分:0)
您的I2C地址设置似乎错误。 Arduino的Wire库(doc)使用7位地址。最后一位是读/写位,Wire
自动处理。因此,您要截取最低有效位并将地址设置为0x3C
而不是0x78
。
Adafruit_SSD1306库实际上使用0x3C
作为默认地址。请参阅.h和.cpp文件中begin()
的声明和注释。
有关更多信息,建议您查看SSD1306 data sheet。这是I2C数据格式。查看从站地址的格式。
答案 2 :(得分:0)
这不是每次都出现硬件故障时也要检查程序。加载示例测试程序,然后重试。 https://iotforgeeks.com/i2c-oled-display-not-working/帮助我解决了同一问题。