OLED дисплеят се превърна в популярен избор за интегриране в проекти на Arduino, главно защото е компактен, има ниска консумация на енергия и позволява изключителна видимост дори в ярка среда. Освен това, благодарение на лесното му свързване, използването му е в обсега на всеки ентусиаст на електрониката, независимо от неговия опит. В тази статия ще разгледаме задълбочено как да свържете и програмирате 0.96-инчов OLED дисплей с Arduino, като подробно описваме техническите аспекти и предлагаме практически примери за код.
Ако никога не сте работили с OLED дисплей, има няколко ключови момента, които трябва да знаете, преди да започнете проекта си. OLED (Organic Light Emitting Diode) имат фундаментални разлики с други видове екрани, като например LCD. Например OLED не изисква подсветка, което значително намалява консумацията на енергия. На екрани с размер от 0.96 инча това може да е от съществено значение, ако проектът се захранва от батерии. Сега нека се задълбочим в неговите характеристики.
Какво е OLED екран?
OLED екранът е вид дисплей, който използва органично съединение, което излъчва светлина при прилагане на електрически ток. Това ги прави идеални за много електронни проекти, тъй като технологията им позволява на всеки пиксел да свети сам, което също подобрява видимостта на открито. Повечето OLED екрани, продавани за Arduino, имат SSD1306 контролер, който позволява управление на изпращането на сигнали към екрана. Всъщност SSD1306 е един от най-често срещаните в проектите на Arduino и ще го видим в примерите по-късно.
Едно от основните предимства на OLED екраните е ниската им консумация. Средно малък екран от 0.96 инча може да консумира около 20 mA. Защо това е важно? Е, ако използвате батерия за захранване на вашия Arduino проект, намаляването на консумацията на енергия винаги е значителен плюс. В допълнение, неговата разделителна способност от 128x64 пиксела може да представя изображения с доста добра острота предвид размера му.
От друга страна, един от проблемите, които могат да възникнат при този тип екран е, че размерът му е наистина малък. Въпреки че предлагат добра видимост, в някои проекти, където се изисква да се покаже много информация, този размер може да се окаже недостатъчен.
Свързване на OLED дисплея към Arduino
OLED дисплеят лесно се свързва към платката Arduino с помощта на I2C или SPI шина, в зависимост от модела. За този урок ще се съсредоточим върху връзката, използваща I2C, тъй като тя е една от най-често срещаните и най-простите.
Трябва да свържете щифтовете на OLED дисплея със съответните щифтове на вашия Arduino, както следва:
- GND (заземяване) с щифта GND на Arduino
- VCC с 5V или 3.3V щифт на Arduino
- SDA към Arduino щифт A4
- SCL към щифт A5 на Arduino
Както можете да видите, връзката е доста проста: имате нужда само от четири кабела. След това, независимо дали използвате SPI или I2C шина, процесът на свързване е подобен, въпреки че щифтовете варират в зависимост от избрания от вас тип комуникация.
Примерен код за OLED дисплей
За да накарате OLED екрана да работи с Arduino, една от най-добрите опции е да използвате библиотеките, разработени от Adafruit. Контролерът SSD1306, както споменахме преди, е съвместим с библиотеката Adafruit SSD1306, което улеснява живота ни при създаване на графики и текст на екрана.
По-долу ви оставям основен код, който ще ви позволи да показвате текст на OLED екран с I2C връзка:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println(F("Hola, Mundo!"));
display.display();
}
void loop() {}
Този код инициализира екрана, изчиства дисплея и след това пише "Hello, World!" на OLED екрана. Можете да използвате различни функции на библиотеката Adafruit GFX, за да създавате графики, да рисувате линии, кръгове или дори да показвате изображения на екрана.
Други полезни примери за OLED екрана
Примерът по-горе е само основно въведение, но можете да направите много повече с OLED дисплеите. Например можете да рисувате различни геометрични фигури, да правите анимации или дори да създавате малки графики.
Една от най-интересните функции, които предлагат библиотеките на Adafruit, е възможността да рисувате множество пиксели, което означава, че можете да създавате скролиращи анимации. Допълнителен пример би бил превъртащият се текст, който е много полезен, ако планирате да показвате съобщения, които се променят динамично.
Друга употреба, която можете да дадете на тези екрани, е да показвате данни в реално време в интерактивни проекти, като например сензор за температура или влажност. Екранът може да се актуализира, когато се получат нови показания на сензора, което прави всеки проект много по-визуален.
Често срещани проблеми при използване на OLED екрани
Един от най-често срещаните проблеми при използване на OLED дисплеи с Arduino е липсата на памет. Библиотеките на Adafruit, макар и много пълни, могат да консумират значително количество памет на процесора Arduino, особено във версии като Arduino Uno. Ако имате проблеми с пространството, можете да опитате да оптимизирате кода си, да премахнете функции, които не ви трябват, или дори да използвате платка с по-голям капацитет, като например Arduino Mega.
Друг често срещан проблем е първоначалната настройка на I2C връзката. Ако не използвате правилните щифтове SDA и SCL, дисплеят може да не работи или да показва грешки при свързване. Уверете се, че използвате правилните щифтове въз основа на вашия модел Arduino.
И накрая, някои потребители също съобщават за празен екран или такъв, който не отговаря на никакви команди. Това може да се разреши, като се уверите, че захранващото напрежение е правилно (3.3 V или 5 V в зависимост от модела на дисплея) и че кабелите са свързани правилно.