- Библиотеки
- Операторы
- Sketch
- Управляющие операторы
- Синтаксис
- Арифметические операторы
- Операторы сравнения
- Логические операторы
- Указатели доступа
- Битовые операторы
- Составные операторы
- Данные
- Типы данных
- Преобразование типов данных
- Область видимости переменных и квалификаторы
- Утилиты
- Цифровой ввод/вывод
- Аналоговый вход/выход
- Расширенный ввод/вывод
- Время
- Математические функции
- Тригонометрические функции
- Символы
- Случайные числа
- Биты и байты
- Внешние Прерывания
- Прерывания
- Функции передачи данных
- Функции
- Устройства
- Датчики
- SSD1306
- Модули
SSD1306
SSD1306 — это популярная однокристальная микросхема-контроллер для управления OLED-дисплеями, которые используют технологию органических светодиодов (OLED) для излучения света. Контроллер SSD1306 обеспечивает буферизацию памяти и управляет всей работой дисплея, требуя минимальных ресурсов от подключенного микроконтроллера, например, Arduino или Raspberry Pi. Такие дисплеи, как 0.96-дюймовый с разрешением 128x64 пикселей, используют интерфейс I²C для подключения и могут выводить текст, графику и фигуры благодаря специализированным библиотекам.
Основные характеристики и функции:
Технология:
OLED-дисплей, где каждый пиксель является светоизлучающим прибором на основе органических соединений.
Контроллер: Микросхема SSD1306, которая управляет дисплеем и буферизацией памяти.
Разрешение: Чаще всего встречаются дисплеи 128x64 или 128x32 пикселей.
Интерфейс: Используется популярный двухпроводный интерфейс I²C, что упрощает подключение к различным микроконтроллерам.
Питание: Обычно требуется напряжение 3.3–5 В.
Функциональность: Библиотеки для SSD1306 позволяют выводить текст, рисовать фигуры и отображать графическую информацию.
Преимущества:
Экономичность: Дисплеи на основе SSD1306 потребляют мало энергии, что делает их подходящими для проектов с ограниченным питанием.
Высокий контраст: OLED-технология обеспечивает высокую контрастность и яркое изображение, которое хорошо видно даже при ярком свете.
Простота подключения: Стандартный I2C интерфейс и наличие готовых библиотек упрощают разработку и интеграцию в проекты с Arduino и другими платформами.
Применение:
Миниатюрные дисплеи SSD1306 широко используются в проектах по электронике и робототехнике, например, в Arduino-проектах для отображения данных с датчиков, температуры, состояния устройства и создания простых графических интерфейсов.
Подключение:
Для подключения OLED-дисплея SSD1306 к Arduino Nano используйте I²C интерфейс:
соедините выводы GND, VCC, SDA и SCL модуля с соответствующими выводами Arduino Nano – GND, 5V, A4 (SDA) и A5 (SCL) соответственно. Питание можно подать как от 5V, так и от 3.3V
Необходимые библиотеки
Для работы с дисплеем SSD1306 в Arduino IDE вам понадобятся библиотеки, такие как Adafruit_SSD1306 и Adafruit_GFX.
Шаги в Arduino IDE
Установка библиотек: В Arduino IDE перейдите в «Скетч» -> «Подключить библиотеку» -> «Управлять библиотеками». Найдите и установите Adafruit_SSD1306 и Adafruit_GFX. Загрузка скетча: Загрузите пример скетча из установленной библиотеки или напишите свой код, который будет выводить изображение на дисплей
Скетч:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Размеры дисплея
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// Создаём объект дисплея (адрес по умолчанию 0x3C)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
// Инициализация
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
// Если дисплей не найден
for(;;); // Остановиться здесь
}
display.clearDisplay(); // Очистка
display.setTextSize(1); // Размер шрифта
display.setTextColor(SSD1306_WHITE); // Цвет текста
display.setCursor(0,0); // Позиция курсора
display.println("Hello, Arduino!");
display.println("SSD1306 OLED");
display.display(); // Вывод на экран
}
void loop() {
// Тут можно обновлять экран
}
Скетч с графикой:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
for(;;); // Стоп, если дисплей не найден
}
display.clearDisplay();
// Линия
display.drawLine(0, 0, SCREEN_WIDTH-1, SCREEN_HEIGHT-1, SSD1306_WHITE);
// Прямоугольник
display.drawRect(10, 10, 50, 30, SSD1306_WHITE);
// Закрашенный прямоугольник
display.fillRect(70, 10, 40, 20, SSD1306_WHITE);
// Окружность
display.drawCircle(30, 50, 10, SSD1306_WHITE);
// Закрашенный круг
display.fillCircle(90, 50, 10, SSD1306_WHITE);
// Текст
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(5, 55); display.println(F("Arduino Nano"));
display.display(); // Выводим всё на экран
}
void loop() {
// Тут можно сделать анимацию или графику
}
--------------------------------------------------------------------------
Основные команды для работы с дисплеем SSD1306
Управление экраном
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C) – инициализация дисплея (адрес обычно 0x3C или 0x3D).
- display.display(); – отрисовка на экране того, что нарисовано в буфере.
- display.clearDisplay(); – очистка экрана (очищает буфер, нужно вызывать display.display(); чтобы изменения появились).
- display.invertDisplay(true/false); – инвертирование цветов (белое ↔ чёрное).
- display.dim(true/false); – уменьшение/увеличение яркости (работает не на всех дисплеях).
Работа с текстом
- display.setTextSize(n); – размер текста (целое число: 1, 2, 3 …).
- display.setTextColor(SSD1306_WHITE); – цвет текста (обычно SSD1306_WHITE или SSD1306_BLACK).
- display.setCursor(x, y); – установка позиции курсора (в пикселях).
- display.println("Текст"); – вывод текста + перевод строки.
- display.print("Текст"); – вывод текста без перевода строки.
Примитивы (графика)
Линии
- display.drawPixel(x, y, цвет); – рисует 1 пиксель.
- display.drawLine(x0, y0, x1, y1, цвет); – линия.
- display.drawFastHLine(x, y, длина, цвет); – горизонтальная линия.
- display.drawFastVLine(x, y, длина, цвет); – вертикальная линия.
Прямоугольники
- display.drawRect(x, y, w, h, цвет); – прямоугольник.
- display.fillRect(x, y, w, h, цвет); – закрашенный прямоугольник.
- display.drawRoundRect(x, y, w, h, радиус, цвет); – прямоугольник со скруглёнными углами.
- display.fillRoundRect(x, y, w, h, радиус, цвет); – закрашенный вариант.
Круги
- display.drawCircle(x, y, радиус, цвет); – окружность.
- display.fillCircle(x, y, радиус, цвет); – закрашенный круг.
Треугольники
- display.drawTriangle(x0, y0, x1, y1, x2, y2, цвет); – треугольник.
- display.fillTriangle(x0, y0, x1, y1, x2, y2, цвет); – закрашенный треугольник.
Битмапы (изображения)
- display.drawBitmap(x, y, data, w, h, цвет); – вывод картинки (монохром, данные в PROGMEM).
Цвета
Так как дисплей монохромный, доступно только:
- SSD1306_WHITE – белый пиксель.
- SSD1306_BLACK – чёрный пиксель.