阁楼 85 I2C SSD1306 屏幕不工作
ATtiny85 I2C SSD1306 screen not working
在我收到邮件中的 SSD1306 I2C 后,我已经在这个问题上思考了 3 天多了。我有一个来自 Sparkfun 的 Tiny Programmer,我将它与面包板一起使用。
这是我的管脚布局:pin2-->SDA,pin3-->SCL。 SSD1306 Arduino 库上的文档说明我必须使用这些引脚,即使我知道 SDA 是 pin5 而 SCL 是 pin7。电源和地从 Tiny Programmer 跳转到 OLED。
我遇到的主要问题是 OLED 不亮或不显示文本。
我为此使用的代码是:
/**
* Attiny85 PINS
* ____
* RESET -|_| |- 3V
* SCL (3) -| |- (2)
* SDA (4) -| |- (1)
* GND -|____|- (0)
*
* Atmega328 PINS: connect LCD to A4/A5
*/
#include "ssd1306.h"
void setup() {
/* Replace the line below with ssd1306_128x32_i2c_init() if you need to use 128x32 display */
ssd1306_128x64_i2c_init();
ssd1306_fillScreen(0x00);
ssd1306_charF6x8(0, 0, "Line 1. text");
ssd1306_charF6x8(0, 1, "Line 2. Bold text", STYLE_BOLD);
ssd1306_charF6x8(0, 2, "Line 3. Italic text", STYLE_ITALIC);
ssd1306_charF12x16(0, 3, "Line 4. Double size", STYLE_BOLD);
}
void loop() {
}
编译时没有错误消息,老实说我不知道发生了什么。
我已经尝试交换 SDA 和 SCL,但仍然没有。我什至使用了实际的 SDA 和 SCL 引脚,但仍然一无所获。我觉得我没有选择 and/or OLED 坏了。我只是看看在我尝试更换它之前是否还有什么我可以做的?谢谢。
我认为您必须将引脚 5
和 7
与 attiny85
一起使用。您还需要使用 tinywirem.h
进行 I2C 通信。
ATTiny85 I2C 引脚是 pin5(PB0) SDA 和 pin7(PB2) SCL,SSD1306 库似乎认为它们是 pin3(PB4) SDA 和 pin2(PB3) SCL,演示甚至有一个图表它们中的 ATTTiny 显示不正确的引脚。我没有运气就使用了官方图钉。使用他们建议的引脚实际上确实 运行 但速度太慢,大多数人会认为它不起作用。开始清屏需要几分钟,而真正清屏需要更长时间。
我改用了 U8g2 库,Digispark ATTiny85 的初始化条目对于 u8x8 helloworld 演示工作正常,尽管我无法为 ATTiny85 编译许多演示。我还在寻找更好的解决方案。
在我收到邮件中的 SSD1306 I2C 后,我已经在这个问题上思考了 3 天多了。我有一个来自 Sparkfun 的 Tiny Programmer,我将它与面包板一起使用。
这是我的管脚布局:pin2-->SDA,pin3-->SCL。 SSD1306 Arduino 库上的文档说明我必须使用这些引脚,即使我知道 SDA 是 pin5 而 SCL 是 pin7。电源和地从 Tiny Programmer 跳转到 OLED。
我遇到的主要问题是 OLED 不亮或不显示文本。
我为此使用的代码是:
/**
* Attiny85 PINS
* ____
* RESET -|_| |- 3V
* SCL (3) -| |- (2)
* SDA (4) -| |- (1)
* GND -|____|- (0)
*
* Atmega328 PINS: connect LCD to A4/A5
*/
#include "ssd1306.h"
void setup() {
/* Replace the line below with ssd1306_128x32_i2c_init() if you need to use 128x32 display */
ssd1306_128x64_i2c_init();
ssd1306_fillScreen(0x00);
ssd1306_charF6x8(0, 0, "Line 1. text");
ssd1306_charF6x8(0, 1, "Line 2. Bold text", STYLE_BOLD);
ssd1306_charF6x8(0, 2, "Line 3. Italic text", STYLE_ITALIC);
ssd1306_charF12x16(0, 3, "Line 4. Double size", STYLE_BOLD);
}
void loop() {
}
编译时没有错误消息,老实说我不知道发生了什么。
我已经尝试交换 SDA 和 SCL,但仍然没有。我什至使用了实际的 SDA 和 SCL 引脚,但仍然一无所获。我觉得我没有选择 and/or OLED 坏了。我只是看看在我尝试更换它之前是否还有什么我可以做的?谢谢。
我认为您必须将引脚 5
和 7
与 attiny85
一起使用。您还需要使用 tinywirem.h
进行 I2C 通信。
ATTiny85 I2C 引脚是 pin5(PB0) SDA 和 pin7(PB2) SCL,SSD1306 库似乎认为它们是 pin3(PB4) SDA 和 pin2(PB3) SCL,演示甚至有一个图表它们中的 ATTTiny 显示不正确的引脚。我没有运气就使用了官方图钉。使用他们建议的引脚实际上确实 运行 但速度太慢,大多数人会认为它不起作用。开始清屏需要几分钟,而真正清屏需要更长时间。
我改用了 U8g2 库,Digispark ATTiny85 的初始化条目对于 u8x8 helloworld 演示工作正常,尽管我无法为 ATTiny85 编译许多演示。我还在寻找更好的解决方案。