SSD1306 подключение по I2C к Arduino UNO, Nano и Mega

Содержание

Дисплей SSD1306 является популярным OLED-дисплеем, который обеспечивает яркое и четкое изображение на экране. Он поддерживает интерфейс I2C для подключения к микроконтроллеру Arduino. В этой статье мы рассмотрим процесс подключения дисплея SSD1306 к Arduino UNO, Nano и Mega по протоколу I2C.

Статья подходит для дисплеев с любой величиной в дюймах и разрешением экрана.

Краткое описание дисплея SSD1306

Дисплей SSD1306 представляет собой монохромный OLED-дисплей с высоким разрешением, который идеально подходит для маленьких проектов, где требуется компактный и яркий дисплей. Он имеет небольшой размер, низкое энергопотребление и широкий угол обзора.

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

Дисплей может подключен к любому Arduino, также не важно разрешение и размер в дюймах экрана. Пара пинов SDA и SCL есть всех arduino, в нашем используется случае Arduino Uno.

Таблица 1. Подключение SSD1306 и Arduino Uno, Nano и Mega
SSD1306Arduino UnoArduino NanoArduino Mega
1SDAA4A4пин 20 (SDA)
2SCLA5A5пин 21 (SCL)
3VCC5V5V5V
4GNDGNDGNDGND
Схема подключение SSD1306 к Arduino Uno
Рисунок 1. Подключение Arduino Uno и SSD1306

Краткое описание библиотек

Библиотека Adafruit_GFX.h предоставляет набор графических функций для работы с различными дисплеями, такими как рисование примитивов, текста и т. д.

Библиотека Adafruit(2.5.12)_SSD1306.h, в свою очередь, представляет драйвер для работы с дисплеем SSD1306, который упрощает взаимодействие с дисплеем и предоставляет удобный интерфейс.

Код приложения для любых плат Arduino для управление дисплеем SSD1306

Arduino Uno подключается через интерфейс I2C для работы с экраном SSD1306. В предварительном блоке setup выполняется инициализация, настройка размера шрифта и место курсора. Как все будет настроено выведется сообщение «DocsTech Help You!» и через 1 секунду исчезнет. Далее циклически происходит вывод текста «Ready :» и цифрой равной числу повторений с интервалом 500 мс. Счетчик инкрементируется до 99 и сбрасывается. Весь код написан на языке С/C++.
#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; // Сброс счетчика }