Цена:
Технические характеристики
Разработка собственных электронных проектов, причём совершенно не важно какой сложности они должны получится в завершённом виде, часто подразумевает использование в конструкции современного универсального инструмента общения между устройством и пользователем. К подобным средствам взаимодействия с окружающим миром относится любой графический или символьный экранный модуль, способный оповещать о любых запрограммированных событиях: вывод текстовой информации с внутренними процедурными данными или показателями, полученными от всевозможных измерительных датчиков, отображение разноразмерных графических фигур, построение разнообразных графиков и прочих визуально понятных элементов. Выбор подходящего дисплея напрямую зависит от потребностей проекта и конструктивных возможностей экранного модуля, начиная от высвечивания простых одноцветных символьных строк и заканчивая выводом на экран цветных изображений с поддержкой большого количества оттенков палитры RGB. Как правило, способности экранного модуля не ограничиваются лишь только графическим ядром контроллера, если в схемах плат присутствуют функционально дополняющие компоненты.
Наиболее популярные на сегодняшний день экраны производятся по технологии TFT TN LCD - недорогие жидкокристаллические матрицы с фоновой светодиодной подсветкой. Экраны TFT TN LCD имеют ряд ограничений, среди которых выделяются невысокие углы обзора и контрастность. Альтернативная технология производства OLED-экранов (органический светодиод, светящийся при прохождении через него электрического тока) практически избавлена от подобных недостатков, обладает увеличенными показателями цветопередачи, настоящим глубоким чёрным цветом, малым весом ЖК-панелей и значительно расширенными углами обзора, предоставляя возможность с любой стороны просматривать изображения с максимальной четкостью, без видимых цветовых искажений. В экранных матрицах OLED, свечение излучают сами диоды, и им не требуется дополнительное освещение. По этой причине, дисплеи OLED можно называть эффективными в задачах экономии энергопотребления, что порой совсем немаловажно в проектах с использованием автономных источников питания.
Интерфейс графического модуля с OLED экраном 2.7 дюйма
№ контакта | Обозначение | Назначение | Описание |
1 | GND | Питание | Заземление |
2 | VCC | Питание | Входное напряжение модуля 3.3 В |
3 | SCL | Вход | Сигнал тактирования, SPI_CLK |
4 | SDA | Вход | Сигнал входящих данных, MOSI |
5 | RES | Вход | Сброс OLED |
6 | DC | Вход | Сигнал переключения между режимами приёма Данных и Команд |
7 | CS1 | Вход | Выбор микросхемы OLED, SPI_CS |
8 | FSO | Выход | Сигнал исходящих данных банка шрифтов, SPI_MISO |
9 | CS2 | Вход | Выбор микросхемы банка шрифтов |
Встроенные шрифты GT30L32S4W
Микросхема с предустановленными точечными шрифтами (матрица шрифтов) GT30L32S4W, известная также под маркировкой ER3304-1, расположенная на обратной стороне платы модуля, содержит в себе огромный набор горизонтально ориентированных текстовых символов. В состав набора входят ASCII-шрифты, состоящие из 96 латинских букв и знаков: базовый, Arial и Times New Roman. Так как производство модулей изначально ориентировано на всемирную эксплуатацию, включая страны Восточной Азии, в банк со шрифтами вшито более 6 тысяч иероглифов национального стандарта Китайской Народной Республики (кодировка GB2312), дополнительные символы и знаки, японские каны, греческий алфавит, кириллица, чжуинь и символы пиньиня с диакритикой.
Многим приложениям порой требуется использование одного или нескольких шрифтов разного размера. Для облегчения написания программного кода, подразумевающего масштабирование (пропорциональное увеличение или уменьшение), банк GT30L32S4W содержит несколько вариантов предопределённой величины для каждого отдельно взятого шрифта, начиная от самого малого размера 5х7 точек и заканчивая максимально крупным размером 32х32 точек. Доступ ко всем имеющимся в микросхеме символам шрифтов выполняется считыванием данных по установленному адресу. Обращение к микросхеме основано на 4-проводном последовательном периферийном интерфейсе SPI, совмещённым с графическим контроллером SSD1325 в одной шине. Более подробная информация по выборке символом располагается в листе данных на микросхему GT30L32S4W в разделе "Документация".
Схема подключения OLED-дисплея к Ардуино, примеры программирования
Схема соединения контроллера Arduino Due и модуля с OLED-экраном основана на стандартной 4-проводной последовательной шине SPI в периферийном режиме. В демонстрируемом примере, плата Due выбрана не случайно. Почти все её внутренние электрические цепи (кроме выводов питания +5В), включая контакты общего назначения GPIO, работают на номинальном рабочем напряжении 3,3 вольта. Именно на таком же логическом уровне функционирует и центральная микросхема SSD1325 со всеми компонентами модуля с жидкокристаллическим экраном. Плата экранного модуля имеет 9 выводов, каждый из которых промаркирован в соответствии с его непосредственным назначением.
Питание дисплея осуществляется через контакты VCC и GND, подключаемые к источнику постоянного напряжения 3,3 вольта. Вариантов запитать дисплейный модуль существует два: напрямую от платы контроллера, если общая нагрузка на последний не велика и не превышает в сумме 700мА, либо от произвольного внешнего стабилизированного блока питания. Например, удобно будет использовать понижающий преобразователь DC-DC, соединённый с источником основного питания платы контроллера Due.
Процесс передачи графической информации задействует 3 из 4 линий шины связи SPI: тактирование - SCL (SPI_CLK), передача данных от Ардуино Due к дисплею - SDA (SPI_MOSI) и выбор микросхемы - CS1 (SPI_CS). Контакты сигналов перезапуска экранного модуля RES и смены режимов передачи между командами и данными DC выбираются произвольно из группы выводов GPIO.
В приведённом ниже скетче, инициализатором контроллера SSD1325 выступает подключаемая внешняя библиотека U8glib, доступная в репозитории совместимых загружаемых библиотек Arduino IDE и на сайте GitHub. Кроме графических процедур, программный код библиотеки U8glib располагает набором собственных интегрированных шрифтов с изменяемыми размерами. Текст скетча взят из раздела примеров библиотеки и наглядно демонстрирует основные функции работы с графикой.
#include "U8glib.h"
U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RES = 8
void u8g_prepare(void) {
u8g.setFont(u8g_font_6x10);
u8g.setFontRefHeightExtendedText();
u8g.setDefaultForegroundColor();
u8g.setFontPosTop();
}
void u8g_box_frame(uint8_t a) {
u8g.drawStr( 0, 0, "drawBox");
u8g.drawBox(5,10,20,10);
u8g.drawBox(10+a,15,30,7);
u8g.drawStr( 0, 30, "drawFrame");
u8g.drawFrame(5,10+30,20,10);
u8g.drawFrame(10+a,15+30,30,7);
}
void u8g_disc_circle(uint8_t a) {
u8g.drawStr( 0, 0, "drawDisc");
u8g.drawDisc(10,18,9);
u8g.drawDisc(24+a,16,7);
u8g.drawStr( 0, 30, "drawCircle");
u8g.drawCircle(10,18+30,9);
u8g.drawCircle(24+a,16+30,7);
}
void u8g_r_frame(uint8_t a) {
u8g.drawStr( 0, 0, "drawRFrame/Box");
u8g.drawRFrame(5, 10,40,30, a+1);
u8g.drawRBox(50, 10,25,40, a+1);
}
void u8g_string(uint8_t a) {
u8g.drawStr(30+a,31, " 0");
u8g.drawStr90(30,31+a, " 90");
u8g.drawStr180(30-a,31, " 180");
u8g.drawStr270(30,31-a, " 270");
}
void u8g_line(uint8_t a) {
u8g.drawStr( 0, 0, "drawLine");
u8g.drawLine(7+a, 10, 40, 55);
u8g.drawLine(7+a*2, 10, 60, 55);
u8g.drawLine(7+a*3, 10, 80, 55);
u8g.drawLine(7+a*4, 10, 100, 55);
}
void u8g_triangle(uint8_t a) {
uint16_t offset = a;
u8g.drawStr( 0, 0, "drawTriangle");
u8g.drawTriangle(14,7, 45,30, 10,40);
u8g.drawTriangle(14+offset,7-offset, 45+offset,30-offset, 57+offset,10-offset);
u8g.drawTriangle(57+offset*2,10, 45+offset*2,30, 86+offset*2,53);
u8g.drawTriangle(10+offset,40+offset, 45+offset,30+offset, 86+offset,53+offset);
}
void u8g_ascii_1() {
char s[2] = " ";
uint8_t x, y;
u8g.drawStr( 0, 0, "ASCII page 1");
for( y = 0; y < 6; y++ ) {
for( x = 0; x < 16; x++ ) {
s[0] = y*16 + x + 32;
u8g.drawStr(x*7, y*10+10, s);
}
}
}
void u8g_ascii_2() {
char s[2] = " ";
uint8_t x, y;
u8g.drawStr( 0, 0, "ASCII page 2");
for( y = 0; y < 6; y++ ) {
for( x = 0; x < 16; x++ ) {
s[0] = y*16 + x + 160;
u8g.drawStr(x*7, y*10+10, s);
}
}
}
void u8g_extra_page(uint8_t a)
{
if ( u8g.getMode() == U8G_MODE_HICOLOR || u8g.getMode() == U8G_MODE_R3G3B2) {
/* draw background (area is 128x128) */
u8g_uint_t r, g, b;
b = a << 5;
for( g = 0; g < 64; g++ )
{
for( r = 0; r < 64; r++ )
{
u8g.setRGB(r<<2, g<<2, b );
u8g.drawPixel(g, r);
}
}
u8g.setRGB(255,255,255);
u8g.drawStr( 66, 0, "Color Page");
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
{
u8g.drawStr( 66, 0, "Gray Level");
u8g.setColorIndex(1);
u8g.drawBox(0, 4, 64, 32);
u8g.drawBox(70, 20, 4, 12);
u8g.setColorIndex(2);
u8g.drawBox(0+1*a, 4+1*a, 64-2*a, 32-2*a);
u8g.drawBox(74, 20, 4, 12);
u8g.setColorIndex(3);
u8g.drawBox(0+2*a, 4+2*a, 64-4*a, 32-4*a);
u8g.drawBox(78, 20, 4, 12);
}
else
{
u8g.drawStr( 0, 12, "setScale2x2");
u8g.setScale2x2();
u8g.drawStr( 0, 6+a, "setScale2x2");
u8g.undoScale();
}
}
uint8_t draw_state = 0;
void draw(void) {
u8g_prepare();
switch(draw_state >> 3) {
case 0: u8g_box_frame(draw_state&7); break;
case 1: u8g_disc_circle(draw_state&7); break;
case 2: u8g_r_frame(draw_state&7); break;
case 3: u8g_string(draw_state&7); break;
case 4: u8g_line(draw_state&7); break;
case 5: u8g_triangle(draw_state&7); break;
case 6: u8g_ascii_1(); break;
case 7: u8g_ascii_2(); break;
case 8: u8g_extra_page(draw_state&7); break;
}
}
void setup(void) {
//flip screen, if required
//u8g.setRot180();
#if defined(ARDUINO)
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
#endif
}
void loop(void) {
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// increase the state
draw_state++;
if ( draw_state >= 9*8 )
draw_state = 0;
//rebuild the picture after some delay
//delay(150);
}
Физические размеры 2,7" OLED-модуля, мм
Документация модуля с OLED-экраном 2,7" 128х64
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru