====== OLED-дисплей (Troyka-модуль) ======
Графический [[amp>product/troyka-oled?utm_source=man&utm_campaign=troyka-oled&utm_medium=wiki|OLED-дисплей]] умеет выводить показания сенсоров и модулей в виде текста, графиков и диаграмм. Каждый пиксель дисплея является отдельным OLED-светодиодом и не нуждается в подсветке.
Дисплей работает на интерфейсе I2C, для его подключения достаточно двух проводов.
{{ :продукты:troyka-oled:troyka-oled.5.jpg |}}
===== Видеообзор =====
{{youtube>xWlZg1h8Hrw?large}}
===== Примеры для Arduino =====
==== Схема устройства ====
В качестве примера возьмём [[amp>product/arduino-uno?utm_source=man&utm_campaign=troyka-oled&utm_medium=wiki|Arduino Uno]]. Подключите дисплей к пинам шины I²C — ''SDA'' и ''SCL''. Для быстрой сборки используйте [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-oled&utm_medium=wiki|Troyka Shield]].
{{ :продукты:troyka-oled:troyka-oled_arduino_troyka-shield.png |}}
С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-oled&utm_medium=wiki|Troyka Slot Shield]] провода вообще не понадобятся — просто вставьте дисплей в слоты ''A'' и ''B''.
{{ :продукты:troyka-oled:troyka-oled_arduino_troyka-slot-shield.png |}}
Для работы с OLED-дисплеем скачайте и установите библиотеку [[https://github.com/amperka/TroykaOLED|TroykaOLED]].
Библиотека подходит для всех платформ Arduino и работает как с AVR-контроллерами, так и с ARM.
==== Вывод текста ====
Выведем на дисплее текст приветствия. Для этого напишем код, в котором зададим размеры шрифта и координаты вывода текста:
// библиотека для работы с OLED-дисплеем
#include
// создаём объект для работы с дисплеем
// и передаём I²C адрес дисплея
TroykaOLED myOLED(0x3C);
void setup() {
// инициализируем дисплей
myOLED.begin();
// выбираем шрифт 6×8
myOLED.setFont(font6x8);
// печатаем строку
myOLED.print("Hello world!", 25, 0);
// выбираем шрифт 12×10
myOLED.setFont(font12x10);
// печатаем строку
myOLED.print("Amperka", 20, 20);
// инвертируем последующий текст
myOLED.invertText("true");
myOLED.print("OLED", 40, 40);
}
void loop() {
}
{{ :продукты:troyka-oled:troyka-oled_arduino_print-text.png |}}
==== Использование кириллицы ====
Для вывода кириллицы выберите шрифт с поддержкой русского языка. Библиотека по умолчанию использует кодировку UTF-8, но в некоторых случаях вместо кириллических символов может появиться нечитаемый текст. Например, если скетч не был сохранён перед загрузкой. В таком случае вызовите функцию ''setCoding'' и смените кодировку.
// библиотека для работы с OLED-дисплеем
#include
// создаём объект для работы с дисплеем
// и передаём I²C адрес дисплея
TroykaOLED myOLED(0x3C);
void setup() {
// инициализируем дисплей
myOLED.begin();
// выбираем кодировку символов: CP866, TXT_UTF8 или WIN1251
myOLED.setCoding(TXT_UTF8);
//myOLED.setCoding(TXT_CP866);
//myOLED.setCoding(TXT_WIN1251);
// выбираем шрифт 6×8 с поддержкой кириллицы
myOLED.setFont(fontRus6x8);
// печатаем строку с координатами начала текста
myOLED.print("Привет мир!", OLED_CENTER, 10);
// выбираем шрифт 12×10 с поддержкой кириллицы
myOLED.setFont(fontRus12x10);
// печатаем строку с координатами начала текста
myOLED.print("Амперка", OLED_CENTER, 20);
}
{{ :продукты:troyka-oled:troyka-oled_arduino_print-text-rus.png |}}
==== Вывод геометрических фигур ====
На дисплей можно вывести точку, линию, прямоугольник, круг и другие фигуры. Координаты фигуры — обязательные параметры, без них ничего не нарисовать. Заливка фигуры — дополнительный параметр. Если его не указывать, фигура выводится без заливки.
// библиотека для работы с OLED-дисплеем
#include
// создаём объект для работы с дисплеем
// и передаём I²C адрес дисплея
TroykaOLED myOLED(0x3C);
void setup() {
// инициализируем дисплей
myOLED.begin();
// получаем ширину и высоту дисплея
int width = myOLED.getWidth();
int height = myOLED.getHeigth();
// рисуем две диагонали
myOLED.drawLine(0, 0, width - 1, height - 1);
myOLED.drawLine(0, height - 1, width - 1, 0);
// рисуем окружность в центре дисплея и радиусом 30
myOLED.drawCircle(width / 2, height / 2, 30);
// рисуем диск (закрашенную окружность) в центре дисплея и радиусом 20
myOLED.drawCircle(width / 2, height / 2, 20, true);
}
void loop() {
}
{{ :продукты:troyka-oled:troyka-oled_arduino_geometric-figures.png |}}
==== Вывод встроенных изображений ====
В библиотеку загружен набор готовых изображений, которые лежат в отдельном файле. Чтобы изображение появилось на экране, нужно указать его название и координаты.
// библиотека для работы с OLED-дисплеем
#include
// создаём объект для работы с дисплеем
// и передаём I²C адрес дисплея
TroykaOLED myOLED(0x3C);
void setup() {
// инициализируем дисплей
myOLED.begin();
// выводим изображение сигнала связи
myOLED.drawImage(signal4, OLED_LEFT, OLED_TOP);
// выводим изображение антенны
myOLED.drawImage(antenna, 12, OLED_TOP);
// выводим изображение bluetooth
myOLED.drawImage(bluetooth, 24, OLED_TOP);
// выводим изображение батарейки
myOLED.drawImage(battery3, OLED_RIGHT, OLED_TOP);
// выводим изображение письма
myOLED.drawImage(mesege, OLED_CENTER, OLED_CENTER);
}
void loop() {
}
{{ :продукты:troyka-oled:troyka-oled_arduino_draw-default-images.png |}}
==== Вывод собственных изображений ====
Сначала подготовьте изображение для вывода на экран — преобразуйте его в шестнадцатеричный массив чисел. Вам понадобятся графический редактор [[http://gimp.org|GIMP]] и конвертер {{:продукты:troyka-oled:lcdassistant.zip|LCDAssistant}}, который кодирует изображение в байты.
=== Подготовка растрового изображения ===
- Откройте изображение в графическом редакторе GIMP.
- Измените разрешение. Чтобы изображение уместилось на дисплее, его размер не должен превышать 128×64.
Высота картинки должна быть кратна восьми, поскольку перекрашивается целый байт. Один байт равен восьми битам.
- В настройках цвета преобразуйте цветное изображение в чёрно-белое.
- Теперь возьмите карандаш и отредактируйте картинку. Должно остаться только два цвета, без оттенков серого.
- Сохраните изображение в формате ''.bmp'' и откройте в программе LCDAssistant.
- Зайдите в настройки и выберите расположение байтов по вертикали. При загрузке размер изображения определится автоматически.
- В меню ''File'' нажмите ''Save output'' и сохраните файл с расширением ''.h''.
- Откройте полученный файл текстовым редактором. Вы увидите массив шестнадцатеричных чисел.
- Добавьте в начала массива ширину и высоту изображения.
- Скопируйте весь массив и вставьте в начала кода программы Arduino IDE.
Каждый символ в массиве — это байт. Он хранит информацию о том, какие пиксели (биты) закрашивать в байте. Экран модуля двухцветный, поэтому 8 точек кодируются сразу одним байтом. Это помогает снизить размер буфера для видеопамяти до 1 Кб.
=== Код программы ===
// библиотека для работы с OLED-дисплеем
#include
// создаём объект для работы с дисплеем
// и передаём I²C адрес дисплея
TroykaOLED myOLED(0x3C);
// массив изображения
const unsigned char alina [] PROGMEM = { 128, 64,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x7F, 0x3F, 0x1F, 0x8F, 0x8F, 0xCF, 0x8F, 0xCB, 0x8F, 0x9B, 0x8B, 0x1B, 0x13, 0x03, 0x01,
0x01, 0x01, 0x00, 0x01, 0xC3, 0xE5, 0xDF, 0xDF, 0xDF, 0xEF, 0xCF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x07, 0x03, 0x01, 0x01,
0x00, 0x00, 0x02, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x27, 0x6B, 0x83, 0x00, 0x03, 0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x12, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x1C, 0xA4, 0x88, 0x00, 0x80, 0xF0, 0xFF, 0xFF, 0xFF,
0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xA0, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0C,
0x14, 0x0E, 0x0E, 0x1E, 0x0E, 0x1E, 0x0F, 0x2A, 0x81, 0xE0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFE, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x04, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,
0x00, 0x80, 0x80, 0x80, 0x80, 0x20, 0x30, 0x3E, 0x3F, 0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
0x7F, 0x3F, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
void setup() {
// инициализируем дисплей
myOLED.begin();
// инвертируем экран для наглядности изображение
myOLED.invertDisplay(true);
// выводи изображение с координатами верхнего левого угла
myOLED.drawImage(alina, 0, 0);
}
void loop() {
}
{{ :продукты:troyka-oled:troyka-oled_arduino_draw-images.png |}}
===== Примеры для Espruino =====
==== Схема устройства ====
В качестве примера возьмём [[amp>product/iskra-js?utm_source=man&utm_campaign=troyka-oled&utm_medium=wiki|Iskra JS]]. Подключите дисплей к пинам шины I²C — ''SDA'' и ''SCL''. Для быстрой сборки используйте [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-oled&utm_medium=wiki|Troyka Shield]].
{{ :продукты:troyka-oled:troyka-oled_espruino_troyka-shield.png |}}
С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-oled&utm_medium=wiki|Troyka Slot Shield]] провода вообще не понадобятся — просто вставьте дисплей в слоты ''A'' и ''B''.
{{ :продукты:troyka-oled:troyka-oled_espruino_troyka-slot-shield.png |}}
Для Espruino не нужно скачивать библиотеку — код подгрузится автоматически при прошивке.
==== Вывод текста ====
Для вывода первой программы приветствия, воспользуйтесь скриптом вроде этого:
// настраиваем шину I²C
PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000});
// подключаем библиотеку для работы с графическим дисплеем
var screen = require("SSD1306").connect(PrimaryI2C);
// выбираем размер шрифта
screen.setFontVector(15);
// записываем строку в буфер дисплея
screen.drawString("Hello world!", 18, 0);
// отображаем содержимое буфера на экране
screen.flip();
{{ :продукты:troyka-oled:troyka-oled_espruino_print-text.png |}}
==== Вывод геометрических фигур ====
Методы библиотеки также позволяют выводить геометрические фигуры.
// настраиваем шину I²C
PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000});
// подключаем библиотеку для работы с графическим дисплеем
var screen = require("SSD1306").connect(PrimaryI2C);
// получаем ширину и высоту дисплея
var width = screen.getWidth();
var height = screen.getHeight();
// рисуем две диагонали
screen.drawLine(0, 0, width - 1, height - 1);
screen.drawLine(0, height - 1, width - 1, 0);
// рисуем окружность в центре дисплея и радиусом 30
screen.drawCircle(width / 2, height / 2, 30);
// рисуем диск (закрашенную окружность) в центре дисплея и радиусом 20
screen.fillCircle(width / 2, height / 2, 20);
// отображаем содержимое буфера на экране
screen.flip();
{{ :продукты:troyka-oled:troyka-oled_espruino_geometric-figures.png |}}
===== Примеры для WiFi Slot =====
==== Схема устройства ====
Подключите дисплей к платформе [[amp>product/wifi-slot?utm_source=man&utm_campaign=troyka-oled&utm_medium=wiki|WiFi Slot]]. Используйте пины шины I²C — ''SDA'' и ''SCL''. Для этого установите модуль в соответствующий слот.
{{ :продукты:troyka-oled:troyka-oled_scheme_wifi-slot.png |}}
Платформа WiFi Slot программируется двумя способами:
* [[:wifi-slot#программирование_на_c|на языке C++ при помощи Arduino IDE]];
* [[:wifi-slot#программирование_на_javascript|на языке Javascript через Espruino IDE]].
После настройки платформы загрузите [[#примеры_для_arduino|код из примера для Arduino]] или [[#примеры_для_espruino|код для JavaScript]].
===== Элементы платы =====
{{ :продукты:troyka-oled:troyka-oled_annotation.png |}}
==== OLED-дисплей ====
Экран модуля выполнен по технологии OLED с разрешением 128×64. OLED (organic light-emitting diode) — это матрица точек, где каждый пиксель является отдельным органическим светодиодом. Благодаря светящимся пикселям дисплей не нуждается в подсветке, а чёрный цвет — действительно чёрный и не светится в темноте. Изображение остаётся насыщенным и контрастным даже при углах обзора более 160°.
==== Пользовательские кнопки ====
На модуле по бокам расположены две тактовых кнопки ''S1'' и ''S2''. Пока кнопка отпущена, на сигнальном пине ''S'' присутствует логическая единица. При нажатии на кнопку возникает логический ноль.
==== Troyka-контакты ====
На модуле выведены две пары Troyka-контактов.
//Нижняя группа//
* Питание (V) — соединяется с рабочим напряжением микроконтроллера.
* Земля (G) — соединяется с землёй микроконтроллера.
//Верхняя группа//
* Сигнальный (D) — пин данных шины I²C. Подключается к ''SDA'' пину микроконтроллера.
* Сигнальный (C) — пин тактирования шины I²C. Подключается к ''SCL'' пину микроконтроллера.
==== Смена адреса модуля ====
Иногда в проекте необходимо использовать несколько дисплеев. Для смены адреса капните припоем на контактную площадку с обратной стороны модуля. Адрес дисплея изменится с ''0x3C'' на ''0x3D''.
{{ :продукты:troyka-oled:troyka-oled_change_address.gif |}}
==== Понижающий регулятор напряжения ====
Линейный понижающий регулятор напряжения {{:продукты:troyka-oled:ncp582_datasheet.pdf|NCP582}} с выходом 3,3 В позволяет питать дисплей как от 5 В, так и напрямую от 3,3 В. Максимальный выходной ток — 150 мА.
На плате есть необходимая обвязка для подключения устройств к любым платам. Это значит, что трёхвольтовая плата не сгорит, если к ней подключить пятивольтовый датчик.
===== Принципиальная и монтажная схемы =====
{{:продукты:troyka-oled:troyka-oled_schematic.png?direct&430 |}}
{{:продукты:troyka-oled:troyka-oled_layout_top.png?direct&230 |}}
{{:продукты:troyka-oled:troyka-oled_layout_bottom.png?direct&230 |}}
===== Характеристики =====
* Диагональ: 0,96 дюйма
* Разрешение: 128×64
* Технология: OLED (Organic Light Emitting Diode)
* Драйверы матрицы: SSD1306
* Цвет: монохромный
* Угол обзора: более 160°
* Напряжение питания: 3.3–5 В
* Интерфейс: I²C
* Адрес модуля: 0x3C (по умолчанию) / 0x3D
* Дополнительно: две пользовательских кнопки
* Габариты: 50,8×25,4 мм
===== Ресурсы =====
* [[amp>product/troyka-oled?utm_source=man&utm_campaign=troyka-oled&utm_medium=wiki|OLED-дисплей]] в магазине
* [[https://github.com/amperka/TroykaOLED|Библиотека для Arduino]]
* [[https://github.com/amperka/hardware-drawings/blob/master/troyka-oled_top.svg|Векторное изображение модуля, лицевая сторона]]
* [[https://github.com/amperka/hardware-drawings/blob/master/troyka-oled_bottom.svg|Векторное изображение модуля, оборотная сторона]]
* {{:продукты:troyka-oled:ssd1306_datasheet.pdf|Техническая документация на драйвер матрицы SSD1306}}
* {{:продукты:troyka-oled:ncp582_datasheet.pdf|Техническая документация на понижающий регулятор напряжения}}