OLED



Az Oled szerves alapú fénykibocsájtó dióda. A fénykibocsájtásért felelős réteg szerves eredetű, ezt két elektróda réteg közé szorítják be, ha áramot adnak az aktuális elektródákra a közre fogott réteg fényt emulál. A fény láthatóságát a felső elektródák átlátszósága segíti.
Nagy előnyei: kis fogyasztás, széles látószög, gyors válaszidő, jobb kontraszt, és az, hogy hajlékony hordozó rétegen is kialakítható.
Hátrányai: rövidebb élettartam az LCD-kel és a ledekkel szemben, a színegyensúly az oled öregedésével megváltozik, pixelek, színek tartós használatánál azok beéghetnek a kijelzőbe, UV fény hatására nagyon gyorsan tönkre megy.

Röviden ennyit az Oled bemutatásáról most térjünk át a gyakorlatra. Mint mindenki én is beszereztem egy Arduinohoz kapcsolható Oled kijelzőt Kínából. SSD1306 kijelzőmeghajtóval szerelt, SPI kommunikációt használ(másik változat I2C-t használja) a következő tulajdonságokkal:

A kapcsolás:



Fontos! Nagyon érzékeny az érintkezésekre, kis kontakthibától már lefagy a kijelzés és nagyon
nehezen jön vissza, ezért próbáljuk minél stabillabra elkészíteni az összekötéseket.


Az Oledhez külön könyvtárat használunk ami letölthető a következő oldalról:

https://github.com/adafruit/Adafruit_SSD1306

Letöltés, kicsomagolás, átnevezés Adafruit_SSD1306 -ra, majd bemásolás az Arduino/ librarie könyvtárba. Az IDE újraindítása után nyissuk meg a Minták /Adafruit_SSD1306 / ssd1306_128x64_spi fájlát. Töltsük fel, ha mindent jól csináltunk egy látványos grafikai bemutatóban lesz részünk. A bemutató végig vezet a könyvtár függvényein, ezek közül emelek ki néhányat, de kezdjük az elején:

Ha nincs, a GFX.h könyvtár letölthető:  https://github.com/adafruit/Adafruit-GFX-Library

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// meghatározzuk az SPI csapokat
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13

//hozzárendeljük a kijelzőnkhöz a csapokat
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);


void setup() {
Serial.begin(9600);
//a kijelző inicializálása
display.begin(SSD1306_SWITCHCAPVCC);
//kijelző törlése
display.clearDisplay();
}

void loop(){
//szöveg kiíratás
display.setTextSize(2);// szöveg méret
display.setTextColor(WHITE);//szöveg szín (white-ra kell állítani a láthatóságért)
display.setCursor(30,20);//kurzor pozíció
display.clearDisplay();//kijelző törlése
display.println("Arduino");//szöveg tárolása
display.display();//tárolt szöveg kiíratása
while(1);

//pont kiíratása
display.clearDisplay();
for(int k=0;k<display.height();k+=5){
for(uint8_t i=0;i<display.width();i+=5){
display.drawPixel(i,k,WHITE);//a pontok eltárolása a bufferban
}
}
display.display();//tényleges kiíratás
delay(3000);

//vonal rajzolás
display.clearDisplay();
display.drawLine(display.width()-1,1,0,display.height()-1,WHITE);//vonal bufferelése
display.drawLine(1,1,display.width()-1,display.height()-1,WHITE);
display.display();
delay(3000);

//kör rajzolás
display.clearDisplay();
for(int i=0;i<display.height()/2;i+=10){
display.drawCircle(display.width()/2,display.height()/2,i,WHITE);
}
display.display();
delay(3000);

//háromszög és négyszög rajzolása

display.clearDisplay();
display.drawTriangle(10,10,90,10,50,60,WHITE);//háromszög
display.drawRect(10,10,80,50,WHITE);//négyszög, a 4. és 5. értéke a  szélesség és a  magasság
display.display();
delay(3000);

}

A példa programban néhány függvényt bemutattam, de ennél lényegesen több van, talán majd
egyszer leírom ezeknek a könyvtáraknak a teljes használatát, addig is jó munkát.