Подключение OLED-дисплея SSD1306 к Arduino

OLED-дисплей 128×64

SSD1306 к Arduino Uno и Nano подключается по I2C: SDA на A4, SCL на A5, питание 3,3–5 В.

Схема подключения OLED-дисплея SSD1306 к Arduino

SSD1306 OLED 0,96″Arduino Uno
SCLA5
SDAA4
VCC5V
GNDGND

Схема из примера «Arduino Uno: экран OLED и его цена в памяти».

Arduino Uno: экран OLED и его цена в памяти

Открыть пример целиком

Выводы SSD1306 OLED 0,96″

ВыводНазначение
SCLтактовая линия I2C
SDAлиния данных I2C
VCCпитание
GNDобщий провод

Код для Arduino

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

// Экран 128x64 на I2C — то есть на A4 и A5, других вариантов у Uno нет.
//
// Главное про этот экран на Uno — не картинка, а память. У микросхемы
// нет способа прочитать своё содержимое обратно, поэтому библиотека
// держит копию кадра у себя: 128 * 64 / 8 = 1024 байта. Ровно половина
// всей оперативной памяти платы, занятая до того, как объявлена первая
// переменная.
//
// Отсюда следствия, с которыми на Uno живут: экран 128x32 вместо
// 128x64 занимает вдвое меньше, строки прячут в F(), а String не
// используют вовсе. Проверить, сколько осталось, можно примером
// «сколько осталось оперативной памяти».

Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup() {
  Serial.begin(9600);

  // Адрес 0x3C — обычный для этих модулей. Отказ надо проверять:
  // библиотека при неудаче ничего не рисует и молчит.
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("экран не отозвался: проверьте адрес и A4/A5"));
    return;
  }

  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.println(F("PinPort"));
  display.println(F("Arduino Uno"));
  display.display();     // без этого в ОЗУ есть всё, а на экране ничего
}

void loop() {
  display.fillRect(0, 32, 128, 32, SSD1306_BLACK);
  display.setTextSize(2);
  display.setCursor(0, 36);
  display.print(millis() / 1000);
  display.print(F(" c"));
  display.display();
  delay(200);
}

Скетч можно править и запускать в симуляторе без платы и установки среды.

Что учесть на Arduino

Частые ошибки при подключении к Arduino

Другие детали для Arduino