Anda di halaman 1dari 4

Cara mengakses OLED LCD Display via SPI

27 Februari 2020 hendril satrian purnama arduino, InternetOfThings, IoT, LCD Display,
microcontrollerarduino, lcd, oled, teknologi, tutorial

Tampilan OLED sangat bagus dalam banyak hal. OLED LCD menggunakan daya yang sangat
kecil, cerah, mudah dibaca dengan sudut pandang yang besar dan memiliki resolusi tinggi
mengingat ukurannya yang kecil.

OLED yang akan kita gunakan hari ini adalah OLED yang berukuran 0,96 inci, dengan reolusi
128 × 64 piksel dan menggunakan Bus SPI. Tampilan OLED LCD yang kita gunakan dapat
dilihat pada gambar 1.

gambar 1. OLED LCD 128×64 display SPI

pada tutorial ini, kita akan menggunakan liblary u8glib untuk mengkomunikasikan arduino
dengan display ini. Liblary ini memiliki banyak parameter yang tersedia, kira akan
menggunakannya untuk menampilkan gambar bitmap dan menampilkan beberapa teks.

Jika kalian ingin bereksperimen dan mempelajari lebih lanjut tentang liblary ini, kalian dapat
pergi ke Wiki: U8GLIB Wiki

Dalam tutorial ini kita akan menggunakan sensor DHT11 (sensor Suhu dan Kelembaban) dan
kemudian menampilkan nilai-nilai tersebut pada Layar LCD OLED.

KONFIGURASI RANGKAIAN
gambar 2. Diagram rangakain OLED LCD ke Arduino Nano

Gambar 2 menunjukkan diagram rangkaian untuk mengkoneksikan OLED LCD ke Arduino.

Di sini kita menggunakan Bus SPI untuk mengkoneksikan OLED dengan Arduino. Karena SPI
Bus lebih cepat dari I2C, ini akan membuat tampilan menjadi sangat responsif terhadap
perubahan. Namun, tentu saja ada kekurangan, dimana Bus SPI menggunakan lebih banyak pin
pada Arduino kita. Tetapi untuk proyek tertentu, bukan masalah tentunya. Di sini, OLED
terhubung ke pin 9 hingga 13 dan sensor DHT11 terhubung ke pin A0.

Di sini kita dapat menggunakan breadboard untuk menghubungkan VCC dan Ground ke kedua
modul dari Arduino.

CODE PROGRAM
Setelah merangkai perangkat dengan benar, tentunya kita butuh kode program untuk
menampilkan teks dan gambar pada OLED kita, berikut adalah kode program Arduino untuk
mengakses OLED via SPI

#include "U8glib.h"
#include "dht.h"

#define dht_apin A0

dht DHT;

U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8); // D0=13, D1=11, CS=10, DC=9,


Reset=8

const uint8_t brainy_bitmap[] PROGMEM = {


0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00,
0x00, 0x00, 0x0C, 0x46,
0x00, 0x00, 0x00, 0x00, 0xFC, 0x47, 0xC0, 0x00, 0x00, 0x01, 0xCE, 0x4C, 0x60,
0x00, 0x00, 0x03,
0x02, 0x58, 0x30, 0x00, 0x00, 0x03, 0x02, 0x58, 0x10, 0x00, 0x00, 0x02, 0x02,
0x58, 0x18, 0x00,
0x00, 0x03, 0x06, 0x4C, 0x18, 0x00, 0x00, 0x07, 0x04, 0x44, 0x18, 0x00, 0x00,
0x0D, 0x80, 0x40,
0x3C, 0x00, 0x00, 0x09, 0xC0, 0x40, 0xE6, 0x00, 0x00, 0x18, 0x78, 0x47, 0xC2,
0x00, 0x00, 0x18,
0x0C, 0x4E, 0x02, 0x00, 0x00, 0x1F, 0x86, 0x4C, 0x7E, 0x00, 0x00, 0x0E, 0xC6,
0xE8, 0xEE, 0x00,
0x00, 0x18, 0x43, 0xF8, 0x82, 0x00, 0x00, 0x10, 0x06, 0x4C, 0x03, 0x00, 0x00,
0x30, 0x0C, 0x46,
0x01, 0x00, 0x00, 0x30, 0x18, 0x46, 0x01, 0x00, 0x00, 0x10, 0x18, 0x43, 0x03,
0x00, 0x00, 0x18,
0x10, 0x43, 0x03, 0x00, 0x00, 0x1C, 0x70, 0x41, 0x86, 0x00, 0x00, 0x0F, 0xE0,
0x40, 0xFE, 0x00,
0x00, 0x09, 0x1E, 0x4F, 0x06, 0x00, 0x00, 0x08, 0x30, 0x43, 0x86, 0x00, 0x00,
0x0C, 0x20, 0x41,
0x86, 0x00, 0x00, 0x06, 0x60, 0x40, 0x8C, 0x00, 0x00, 0x07, 0x60, 0x40, 0xB8,
0x00, 0x00, 0x01,
0xE0, 0x41, 0xF0, 0x00, 0x00, 0x00, 0x38, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x0F,
0xBE, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xCF, 0x82, 0x0C, 0x86, 0x46, 0x1F,
0xEF, 0xC3, 0x0C,
0xC6, 0xEE, 0x1C, 0xEC, 0xC7, 0x0C, 0xE6, 0x7C, 0x1C, 0xED, 0x8D, 0x8C, 0xFE,
0x38, 0x1C, 0xED,
0x8D, 0xCC, 0xDE, 0x38, 0x1D, 0xCD, 0xDF, 0xCC, 0xCE, 0x38, 0x1F, 0x8C, 0xF8,
0xEC, 0xC6, 0x38,
0x1F, 0xEC, 0x08, 0x0C, 0xC2, 0x18, 0x1C, 0xEC, 0x00, 0xC0, 0x00, 0x00, 0x1C,
0xFD, 0xFB, 0xC0,
0x00, 0x00, 0x1C, 0xFC, 0x63, 0x00, 0x00, 0x00, 0x1C, 0xEC, 0x63, 0xC0, 0x00,
0x00, 0x1F, 0xEC,
0x60, 0xC0, 0x00, 0x00, 0x1F, 0xCC, 0x63, 0xC0, 0x00, 0x00, 0x1F, 0x0C, 0x63,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
0x2B, 0x4F, 0x67,
0x42, 0x38, 0x7B, 0xEA, 0x86, 0xB2, 0x28, 0xC7,

};

void draw(void) {
u8g.drawBitmapP( 76, 5, 6, 50, brainy_bitmap); // put bitmap
u8g.setFont(u8g_font_unifont); // select font
u8g.drawStr(0, 30, "Temp: "); // put string of display at position X, Y
u8g.drawStr(0, 50, "Hum: ");
u8g.setPrintPos(44, 30); // set position
u8g.print(DHT.temperature, 0); // display temperature from DHT11
u8g.drawStr(60, 30, "c ");
u8g.setPrintPos(44, 50);
u8g.print(DHT.humidity, 0); // display humidity from DHT11
u8g.drawStr(60, 50, "% ");
}

void setup(void) {
}

void loop(void) {
DHT.read11(dht_apin); // Read apin on DHT11

u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );

delay(5000); // Delay of 5sec before accessing DHT11 (min - 2sec)


}

TAHAP TERAKHIR
copy dan paste kode di atas dalam Arduino IDE untuk memprogram Arduino Anda.

Liblary yang digunakan:

Download LCDAssistant software untuk mengkonversi gambar ke dalam bentuk


kode: LCDAssistant.zip

Download library U8GLib di sini: https://bintray.com/olikraus/u8glib/Arduino/1.17

Download library DFT di


sini: https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib

Setelah diunduh, cukup ekstrak konten file zip ke dalam folder “arduino/libraries” Anda.

Anda mungkin juga menyukai