KKM: OLED 128X64

Početnik si s Dasduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala tvrtke soldered na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Dasduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.
UVOD
U ovom tutorijalu ćemo se upoznati s jednim vrlo malim ali zanimljivim modulom koji primjenu nalazi u svim projektima gdje je potrebno prikazati neke podatke sa senzora. Radi se o OLED displeju veličine 0.96“ što ga čini lako primjenjivim u svim projektima jer ne zauzima puno mjesta, a daje odličan kontrast zbog drukčijeg načina rada od LCD displeja.
Karakteristike modula:
• Radni napon: 3.3V ili 5 V
• Potrošnja: 30 mA (ovisi o broju upaljenih pixela)
• Komunikacija: I2C ili SPI
• Boja pixela: Bijela
• Veličina displeja: 0.96“
KAKO RADI?
Displej se sastoji od 128*64 individualnih pixela koji su upravljani sa SSD1306 kontrolerom koji pali ili gasi svaki pixel ovisno kako smo mu zadali. Kako imamo pixele koji se pale ili gase oni nam daju osvjetljenje i displej ne treba pozadinsko osvjetljenje kao kod LCD displeja, te je zbog toga potrošnja OLED displeja puno manja nego kod LCD. Iz istog razloga je i kontrast puno bolji te se s displeja iako je malih dimenzija jasno mogu pročitati i sitniji znakovi. Kontroler SSD1306 podatke može primati na 2 načina putem SPI ili I2C komunikacije ovisno kako odaberemo: na zadnjoj strani displeja nam je označeno koje pinove trebamo kratko spojiti kako bi imali SPI ili I2C komunikaciju
Za napajanje kontrolera se koristi napon od 3.3 V te je zbog toga na pločicu ugrađen regulator napona. Kontroler također može od napona s kojim se napaja napraviti napon (7-9 V) koji je potreban za napajanje samog displeja odnosno pixela. Kako je naš modul izveden tako da se napaja s 5-3.3V naponom onda moramo u programu kontroleru reći da treba napraviti veći napon za rad displeja.
KAKO POVEZATI?
Modul je vrlo jednostavno povezati jer koristi I2C ili SPI komunikaciju . Ako koristimo I2C komunikaciju na pin A4 povezujemo SDA (D1) pin modula, a na pin A5 sa Dasduina SCL (D0) pin s modula. Ako koristimo SPI komunikaciju onda nam je potrebno 5 vodiča za komunikaciju, a dolje je napisano koji pin sa Dasduina se spaja na koji pin na displeju. Kao što smo pod karakteristikama naveli modul može raditi na 5 V ili na 3.3 V pa je svejedno koji napon mu dovedemo jer u sebi ima ugrađen naponski konverter.
SPI komunikacija
Displej >>>>>>>>>>>> Dasduino
GND >>>>>>>>>>>> GND
VCC >>>>>>>>>>>> 5 V ili 3.3 V
D0 >>>>>>>>>>>> D10
D1 >>>>>>>>>>>> D9
RES >>>>>>>>>>>> D13
DC >>>>>>>>>>>>D11
CS >>>>>>>>>>>> D12
ARDUINO KOD
Kako bi OLED displej mogli koristiti sa Dasduinom potrebno je instalirati biblioteku Adafruit_SSD1306 za rad s OLED displejom koja sadrži sve funkcije koje koristimo u primjerima. Ako ne znate kako instalirati biblioteku pogledajte tutorijal u kojem je sve detaljno objašnjeno.
U prvom primjeru ćemo koristiti SPI komunikaciju i na displej prikazivati znakove koje šaljemo sa Serial monitora.
#include <SPI.h> //uključujemo SPI biblioteku koja nam omogućuje SPI komunikaciju
#include <Adafruit_SSD1306.h> //uključujemo biblioteku za rad s OLED displejom
#define SCREEN_WIDTH 128 //definiramo širinu displeja, u pixelima
#define SCREEN_HEIGHT 64 //definiramo visinu displeja, u pixelima
//deklariramo pinove na koje spajamo oled displej za SPI komunikaciju( standardni Croduino pinovi za SPI komunikaciju)
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
//Konstruktor za našu biblioteku za OLED displej,kako bi imali pristup funkcijama koje upravljanju displejom
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
//string u koji spremamo podatke sa Serial monitora te ih potom ispisujemo na displej
String
buf;
void
setup
() {
Serial.begin(9600);
//započinjemo serijsku komunikaciju(9600 bauda)
//Inicijalizacija biblioteke za OLED displej
// SSD1306_SWITCHCAPVCC = generira napon za displej(7-9 V) od 3.3V napona koji ima s regulatora napona
if
(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
//Adresa 0x3C za 128x64 displej
//ako inicijalizacija nije uspjela na Serial monitoru dobijemo poruku o grešci
Serial.println(F(
"SSD1306 allocation failed"
));
for
(;;);
//beskonačna petlja ako inicijalizacija nije uspjela kako program ne bi nastavio izvođenje
}
}
void
loop
() {
//provjeravamo dali iam podataka na Serijskoj komunikaciji, te ako ima nastavljamo s izvršavanjem koda
if
(Serial.available()){
buf=Serial.readString();
//podatke koje primimo sa serijske komunikacije spremamo u varijablu buf
//Ispisujemo što smo primili na Serial monitor
Serial.println(
"Ovo je primljeno"
);
Serial.println(buf);
display.clearDisplay();
//očistimo displej
display.setTextSize(1);
//postavimo veličinu teksta na 1
display.setTextColor(WHITE);
//postavimo boju teksta
display.setCursor(0,0);
//postavimo kursor na početak prvog reda
display.println(buf);
//šaljemo primljeni string na displej
display.display();
//na displeju prikazujemo sve što smo poslali
}
}
Drugi primjer koristi I2C komunikaciju i u njemu ćemo očitavati temperaturu s DHT senzora te ju ispisivati na displej.