Дисплей SSD1306 является популярным OLED-дисплеем, который обеспечивает яркое и четкое изображение на экране. Он поддерживает интерфейс I2C для подключения к микроконтроллеру Arduino. В этой статье мы рассмотрим процесс подключения дисплея SSD1306 к Arduino UNO, Nano и Mega по протоколу I2C.
Статья подходит для дисплеев с любой величиной в дюймах и разрешением экрана.
Краткое описание дисплея SSD1306
Дисплей SSD1306 представляет собой монохромный OLED-дисплей с высоким разрешением, который идеально подходит для маленьких проектов, где требуется компактный и яркий дисплей. Он имеет небольшой размер, низкое энергопотребление и широкий угол обзора.
Схема подключения Arduino к SSD1306
Дисплей может подключен к любому Arduino, также не важно разрешение и размер в дюймах экрана. Пара пинов SDA и SCL есть всех arduino, в нашем используется случае Arduino Uno.
№ | SSD1306 | Arduino Uno | Arduino Nano | Arduino Mega |
---|---|---|---|---|
1 | SDA | A4 | A4 | пин 20 (SDA) |
2 | SCL | A5 | A5 | пин 21 (SCL) |
3 | VCC | 5V | 5V | 5V |
4 | GND | GND | GND | GND |

Краткое описание библиотек
Библиотека Adafruit_GFX.h предоставляет набор графических функций для работы с различными дисплеями, такими как рисование примитивов, текста и т. д.
Библиотека Adafruit(2.5.12)_SSD1306.h, в свою очередь, представляет драйвер для работы с дисплеем SSD1306, который упрощает взаимодействие с дисплеем и предоставляет удобный интерфейс.
Код приложения для любых плат Arduino для управление дисплеем SSD1306
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Ширина дисплея SSD1306 в пикселях
#define SCREEN_HEIGHT 64 // Высота дисплея SSD1306 в пикселях
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Адрес дисплея SSD1306
display.setTextColor(WHITE);
// Калибровка для вывода слова "DocsTech Help You!" на черном экране
display.clearDisplay();
display.setTextSize(1);
display.setCursor(10, 10);
display.println("DocsTech Help You!");
display.display();
delay(1000); // Отображение на 1 секунду
display.clearDisplay(); // Очистить экран
}
void loop() {
static int counter = 0;
// Вывод текста "Ready: " и числа по циклически
display.setTextSize(1);
display.setCursor(10, 10);
display.print("Ready: ");
display.println(counter);
display.display();
delay(500); // Задержка 500 мс
display.clearDisplay(); // Очистить экран
counter++;
if (counter > 99) counter = 0; // Сброс счетчика
}