我已经开始使用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周的时间来解决此问题,因此帮助将不胜感激。
是的,这些显示可能非常烦人。我自己经历过。
首先,请访问供应商的网站,看看他们是否建议使用任何特定的库。我遇到的一些主要问题是:
I2C地址显示错误。 Arduino的Wire库(doc)使用7位地址。因此,您想截取最低有效位并指定0x3C
而不是0x78
。