Cara Menggunakan Modul OLED 128x64 0.98 inch


Cara Menggunakan Modul OLED 128x64 0.98 inch

Pengenalan
                
Dikutip dari wikipedia, OLED merupakan singkatan dari Organic Light emitting diode atau dioda cahaya organik. OLED ini memang berbeda jika dibandingkan LCD karakter atau LCD yang biasa digunakan pada ponsel atau Laptop, Pada LCD umumnya LED backlight akan menyala pada saat kita menghubungkan kabel VCC dan GND dengan sumber daya, sehingga kita bisa tau apakah kabel daya LCD terhubung dengan baik atau tidak, atau apakah LCD masih bagus atau tidak. berbeda dengan OLED, pada Modul display ini tidak terdapat LED backlight-nya, sehingga saya sendiri sempat panik ketika baru mencoba modul ini, kenapa displaynya tidak menyala, padahal saya sudah menghubungkan pin VCC dan GND nya dengan benar, tetapi ketika saya mencoba mengupload program, baru displaynya dapat menampilkan karakter yang terdapat dalam program.

Mulai Membuat Rangkaian

Modul Display OLED ini mempunyai 4 pin, yaitu VCC (sebagai input tegangan positif-nya), GND/Ground (Sebagai input tegangan negatif-nya), SDA/Serial data (Yang nantinya akan dihubungkan pada pin SDA di Mikrokontroller), SCL/Serial Clock (Yang nanti akan dihubungkan pada pin SCL di Mikrokontroller).
Karena OLED display ini tak akan bisa berjalan tanpa mikrokontroller sebagai pengendalinya, maka saya menggunakan Arduino sebagai kontroller-nya.  berikut adalah skema rangkaian -nya.


Pemrograman
Untuk memprogram OLED kita membutuh-kan library tambahan, sebenarnya ada 2 piliihan untuk library OLED ini yaitu u8glib_arduino_v1.14 dan Adafruit_SSD1306-master. kalau u8glib_arduino_v1.14  memang cukup mudah dalam instalasinya, karena kita hanya cukup menambahkan library-nya kemudian uncomment baris

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

contoh program OLED menggunakan library u8glib_arduino_v1.14 dapat dilihat pada sketch dibawah:

/* Menggunakan Library U8glib_arduino_v1.14
 
  Universal 8bit Graphics Library, http://code.google.com/p/u8glib/
  Copyright (c) 2012, olikraus@gmail.com
  All rights reserved.

>> Program ini akan menampilkan tulisan MH dengan ukuran font yang cukup besar <<
*/

#include "U8glib.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); /* HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11) */

void draw(void) { /* fungsi untuk menulis text atau membuat gambar
  //void setFont(const u8g_fntpgm_uint8_t *font) {u8g_SetFont(&u8g, font); } */
u8g.setFont(u8g_font_gdr30r); //menentukan font yang dipakai
  // u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const char *s)
u8g.drawStr(32, 30, "MH"); /*menentukan lokasi x,y dan text yang akan ditampilkan*/
 }
void setup(void) {
  // flip screen, if required
  //u8g.setRot180()
}

void loop(void) {
        // picture loop
  u8g.firstPage(); 
  do {

    draw();
  u8g.setColorIndex(1);
  } while( u8g.nextPage() );
 
        // rebuild the picture after some delay
  delay(200); 
}


Berikut adalah Tampilan OLED ketika program selesai di upload


kekurangan dari library ini yaitu bahasa-nya yang saya kurang mengerti :D , dan sulit untuk menampilkan nilai integer di layar OLED.
Library kedua yang dapat digunakan adalah Adafruit_SSD1306-master, bila kita menggunakan library ini, kita perlu menambahkan Adafruit-GFX-Library-master, library tersebut dapat anda Download disini.
dalam penggunaan library ini, ada beberapa hal yang harus diperhatikan, salah satunya yaitu kita harus merubah perintah #define SSD1306_128_32 pada bagian header Adafruit_SSD1306.h, file tersebut dapat anda cari di >> Documents\Arduino\libraries\Adafruit_SSD1306-master, kemudian buka file Adafruit_SSD1306.h

/*======================================================================
    SSD1306 Displays
------------------------------------------------------------------------
Driver digunakan dalam beberapa ukuran display (128x64, 128x32, dan lain sebagainya) pilih salah satu display yang cocok dibawah ini yang sesuai dengan ukuran display yang kamu miliki, dengan cara un-comment salah satu program dibawah ini
-----------------------------------------------------------------------*/
//  #define SSD1306_128_32
//  #define SSD1306_96_16
/* ........................................
      karena resolusi layar yang saya gunakan adalah 128x64, maka       perintah yang saya gunakan adalah #define SSD1306_128_32, seperti   dibawah ini
*/ .......................................
    #define SSD1306_128_64


Pada Program pertama ini, kita akan mencoba menampilkan Splash screen sederhana, program yang saya buat adalah sebagai berikut


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


#define OLED_ADDR 0x3C

Adafruit_SSD1306 display(-1);
//Adafruit_SSD1306(int8_t RST = -1);

void setup() {
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 display.clearDisplay();

}
void logo(){
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(18,22);
    display.print("Papermind Invention");
    display.display();
}

void loop() {
  display.clearDisplay();
  logo();
  delay(10);
  for (uint8_t i = 14; i<=114; i += 10){
    display.setCursor(i,0);
    display.fillCircle(i, 59, 2, WHITE);
    display.display();
    delay(100); 
  }
  display.clearDisplay();
  logo();
  delay(10);
  for (uint8_t i = 114; i>=14; i -= 10){
    display.setCursor(i,0);
    display.fillCircle(i, 59, 2, WHITE);
    display.display();
    delay(100); 
  }

}

Setelaj program diupload, hasilnya dapat dilihat pada gambar dibawah ini.


Comments

  1. fungsi for pada program kedua itu untuk apa ya ?

    ReplyDelete
  2. itu untuk animasi loading, yang pertama untuk menggerakkan circle ke kanan, kemudian yang kedua untuk menggerakkan circle ke kiri

    ReplyDelete

Post a Comment