- Необходим хардуер:
- Запознаване с OLED дисплеите:
- Хардуер и връзки:
- Програмиране на SSD1306 OLED дисплея за Arduino:
Повечето от нас биха били запознати с матричния LCD дисплей с размери 16 × 2 точки, който се използва в повечето проекти за показване на някаква информация на потребителя. Но тези LCD дисплеи имат много ограничения в това, което могат да направят. В този урок ще научим за OLED дисплеите и как да ги използваме Arduino. На пазара се предлагат много видове OLED дисплеи и има много начини да ги накарате да работят. В този урок ще обсъдим неговите класификации, както и кои ще са най-подходящи за вашия проект.
Необходим хардуер:
- 7-пинов 128 × 64 OLED дисплеен модул (SSD1306)
- Arduino UNO / Nano
- Макет
- Свързване на проводници
- Компютър / лаптоп
Запознаване с OLED дисплеите:
Терминът OLED означава „ Organic Light emitting diode“ , използва същата технология, която се използва в повечето от нашите телевизори, но има по-малко пиксели в сравнение с тях. Истинско забавление е да имаме тези страхотно изглеждащи дисплейни модули, които да бъдат свързани с Arduino, тъй като това ще направи нашите проекти да изглеждат страхотно. Тук разгледахме пълна статия за OLED дисплеите и техните типове.
Използваме монохромен 7-пинов SSD1306 0.96 ”OLED дисплей. Причината за избора на този дисплей е, че той може да работи на три различни комуникационни протокола, като например SPI 3 Wire режим, SPI четирижилен режим и IIC режим. Този урок ще обхване как да използвате модула в SPI 4-жичен режим, тъй като той е най-бързият режим на комуникация и този по подразбиране.
Щифтовете и неговите функции са обяснени в таблицата по-долу.
ПИН номер |
Име на ПИН |
Други имена |
Употреба |
1 |
Gnd |
Земя |
Заземен щифт на модула |
2 |
Vdd |
Vcc, 5V |
Захранващ щифт (3-5V поносим) |
3 |
SCK |
D0, SCL, CLK |
Действа като щифт на часовника. Използва се както за I2C, така и за SPI |
4 |
SDA |
D1, MOSI |
ПИН за данни на модула. Използва се както за IIC, така и за SPI |
5 |
ВЕИ |
RST, RESET |
Нулира модула (полезно по време на SPI) |
6 |
DC |
A0 |
ПИН за команда за данни. Използва се за протокол SPI |
7 |
CS |
Избор на чип |
Полезно, когато по протокол SPI се използват повече от един модул |
В този урок просто ще управляваме модула в 4-Wire SPI режим, а останалото ще оставим за някой друг урок.
Общността на Arduino вече ни предостави много библиотеки, които могат да се използват директно, за да направят това много по-лесно. Изпробвах няколко библиотеки и установих, че библиотеката Adafruit_SSD1306 е много лесна за използване и има шепа графични опции, поради което ще използваме същите в този урок. Но ако вашият проект има ограничение за памет / скорост, опитайте да използвате библиотеката U8g, тъй като работи по-бързо и заема по-малко програмна памет.
Хардуер и връзки:
Схемата за свързване на SSD1306 OLED с Arduino е наистина проста и е показана по-долу
Просто установихме SPI комуникация между OLED модула и Arduino. Тъй като OLED работи на 3V-5V и консумира много малко енергия, той не се нуждае от външно захранване. Можете просто да използвате проводници за свързване или да използвате макет, както аз съм използвал, така че да е лесно да експериментирате. Връзката също е посочена в приказката по-долу
S.No |
Име на щифта на OLED модула |
Име на Pin на Arduino |
1 |
Gnd, Ground |
Земя |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11. |
7 |
CS, Chip Select |
12 |
Забележка: Няма да можете да визуализирате подсветка / светлина на OLED модула само като го включите. Трябва да го програмирате правилно, за да забележите промени на OLED дисплея.
Програмиране на SSD1306 OLED дисплея за Arduino:
След като връзките са готови, можете да започнете да програмирате Arduino. Както казахме по-рано, ще използваме библиотеката Adafruit и библиотеката GFX за работа с този OLED модул. Следвайте стъпките за тестово стартиране на вашия OLED дисплей.
Стъпка 1: Изтеглете библиотеката Adafruit и библиотеката GFX от Github, като използвате връзката по-долу
- Библиотека на Adafruit
- Графична библиотека GFX
Стъпка 2: Трябва да изтеглите два Zip файла. Сега ги добавете към вашия Arduino, като следвате
Скица-> Включване на библиотека -> Добавяне на Zip библиотека, както е показано по-долу. След това изберете библиотеката, която току-що изтеглихме. Можете да изберете само една библиотека наведнъж, поради което трябва да повторите тази стъпка отново.
Стъпка 3: Стартирайте примерната програма, като изберете Файл-> Примери-> Адафрут SSD1306 -> SSD1306_128 * 64_SPI.ino, както е показано на изображението по-долу.
Стъпка 4: Вътре в примерната програма отгоре на ред 64 добавете реда „#define SSD1306_LCDHEIGHT 64“, както е показано на изображението по-долу.
Стъпка 5: Сега качете програмата и ще видите, че OLED дисплеят се задейства с примерния код по подразбиране на Adafruit, както е показано на снимката по-долу. В пълен работен видеото е дадена в края.
Тази примерна програма ви показва всички възможни графики, които биха могли да бъдат показани на OLED екрана. Този код трябва да е достатъчен, за да създавате растерни изображения, да рисувате линии / кръгове / правоъгълници, да играете с пиксели, да показвате символи и низове с различни шрифтове и размери и т.н.
Ако искате да разберете библиотеката и нейните функции по-добре, можете да прочетете по-нататък. Всеки боклук от кода е разделен и обяснен с помощта на редове за коментар. Пълният код е даден в края на този член
Показване и изчистване на екрана:
Писането на OLED екран е точно като писането на черна дъска, трябва да напишем стойностите и след това да го почистим, преди да може да бъде презаписано. Следните команди се използват за писане и изчистване на дисплея
display.display (); // Запис на дисплей display.clearDisplay (); // изчистване на дисплея
Показване на символна променлива:
За показване на съдържанието в променлива може да се използва следният код.
char i = 5; // променливата, която трябва да се покаже display.setTextSize (1); // Изберете размера на текстовия дисплей.setTextColor (БЯЛ); // само за монохромен дисплей, който е възможен display.setCursor (0,0); // 0,0 е горният ляв ъгъл на дисплея на OLED екрана.write (i); // Напишете променливата за показване
Изчертаване на линия, кръг, повторение, триъгълник:
Ако искате да добавите някои символи към вашия дисплей, можете да използвате следния код, за да нарисувате някое от следните
display.drawLine (display.width () - 1, 0, i, display.height () - 1, БЯЛ); // void drawLine (x0, y0, x1, y1, цвят); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, БЯЛ); // void drawRect (x0, y0, w, h, цвят); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, БЯЛ); // void drawTriangle (x0, y0, x1, y1, x2, y2, цвят); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, color);
Изчертаване на низ на екрана:
Следващата част от кода може да се използва o показване на всяко съобщение на екрана на определено място и размер
display.setTextSize (2); // задаване на размера на текста display.setTextColor (БЯЛ); // настройка на цвета display.setCursor (10,0); // Низът ще започне от 10,0 (x, y) display.clearDisplay (); // Изтриване на всеки предишен дисплей на екрана display.println ("Circuit Digest"); // Отпечатайте низа тук “Circuit Digest” display.display (); // изпращаме текста на екрана
Показване на растерно изображение:
Едно недоверително нещо, което може да се направи с OLED модула, е, че той може да се използва за показване на растерни изображения. Следният код се използва за показване на растерно изображение
статичен const неподписан знак PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110 B111100, B111100, B111100, B111100, B11 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, растерно изображение, w, h, WHITE); // void drawBitmap (x, y, * bitmap, w, h, color);
Както можете да видите, за да се покаже изображение, растерните данни трябва да се съхраняват в програмната памет под формата на директива PROMGMEM. Най-просто казано, трябва да инструктираме OLED дисплея какво да прави с всеки пиксел, като му предаваме последователност или стойности от масив, както е показано по-горе. Този масив ще съдържа растерните данни на изображението.
Може да звучи сложно, но с помощта на уеб инструмент е много лесно да конвертирате изображение в битови стойности на картата и да ги заредите в горния масив.
Просто заредете изображението и коригирайте настройките, за да получите предпочитания от вас преглед на изображението. След това щракнете върху „Генериране на код“, копирайте кода и го поставете във вашия масив. Качете програмата и всичко е готово. Опитах се да покажа лого на батман и ето как се получи.
Все още има много неща, които можете да направите с тези библиотеки. За да разберете пълните възможности, посетете страницата Adafruit GFX за графични примитиви.
Надявам се, че сте пуснали това и сте готови да внедрите OLED дисплей в някои от вашите проекти. Ако имате някакъв проблем, споделете ги в раздела за коментари и аз ще се опитам да ги поправя.