ATtiny85 I2C SSD1306屏幕无法正常工作

时间:2018-01-07 02:09:01

标签: arduino avr i2c attiny

在我收到邮件中的SSD1306 I2C之后,我已经讨论了这个问题超过3天了。我有一个来自Sparkfun的微型程序员,我在面包板上使用它。

这是我的引脚布局: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引脚,但仍然没有。我觉得我没有选择和/或OLED坏了。在我试图替换它之前,我只是看到我还能做些什么吗?谢谢。

2 个答案:

答案 0 :(得分:0)

我认为您必须将57attiny85一起使用。您还需要使用tinywirem.h进行I2C通信。

答案 1 :(得分:0)

ATTiny85 I2C引脚是pin5(PB0)SDA和pin7(PB2)SCL,SSD1306库似乎认为它们是pin3(PB4)SDA和pin2(PB3)SCL,演示中甚至还包含一个ATTtiny图他们显示不正确的引脚。我没有运气就使用了官方的大头针。他们建议使用针脚确实可以运行,但是大多数人这么慢就认为它不起作用。开始清除屏幕花了几分钟,而实际上清除它花费了更长的时间。

我改用了U8g2库,尽管我无法为ATTiny85编译很多演示,但Digispark ATTiny85的init条目对于u8x8 helloworld演示仍然可以正常工作。我仍在寻找更好的解决方案。