0% menganggap dokumen ini bermanfaat (0 suara)
65 tayangan19 halaman

Pertemuan 4

Teks ringkasan dalam 3 kalimat atau kurang: Tutorial ini menjelaskan cara menghubungkan dan menggunakan layar LCD I2C dan OLED dengan Arduino, termasuk cara menyesuaikan kontras LCD, menulis teks ke layar, dan menggambar bentuk serta gambar bitmap di layar OLED.

Diunggah oleh

Muhammad Saputra
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
65 tayangan19 halaman

Pertemuan 4

Teks ringkasan dalam 3 kalimat atau kurang: Tutorial ini menjelaskan cara menghubungkan dan menggunakan layar LCD I2C dan OLED dengan Arduino, termasuk cara menyesuaikan kontras LCD, menulis teks ke layar, dan menggambar bentuk serta gambar bitmap di layar OLED.

Diunggah oleh

Muhammad Saputra
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 19

Pertemuan 4.

Praktikum LCD Display dan OLED

Antarmuka LCD I2C

Jika Anda pernah mencoba menyambungkan layar LCD ke Arduino, Anda


mungkin memperhatikan bahwa itu menggunakan banyak pin
Arduino. Bahkan dalam mode 4-bit, Arduino membutuhkan tujuh koneksi –
setengah dari pin I/O digital Arduino yang tersedia.

Solusinya adalah dengan menggunakan layar LCD I2C. Ini hanya


menggunakan dua pin I/O yang bahkan bukan bagian dari kumpulan pin I/O
digital dan dapat digunakan bersama dengan perangkat I2C lainnya.

Hardware Overview
Layar LCD I2C tipikal terdiri dari layar LCD karakter berbasis HD44780 dan
adaptor LCD I2C. Mari belajar lebih banyak tentang mereka.

Character LCD Display

Seperti namanya, LCD ini ideal untuk menampilkan karakter saja. LCD karakter
16×2, misalnya, dapat menampilkan 32 karakter ASCII dalam dua baris.
Jika Anda melihat lebih dekat, Anda dapat melihat persegi panjang kecil untuk
setiap karakter di layar serta piksel yang membentuk sebuah karakter. Masing-
masing persegi panjang ini adalah kisi berukuran 5×8 piksel.

Silakan lihat panduan mendalam kami untuk informasi lebih lanjut tentang


tampilan LCD karakter.

LCD I2C Adapter

Inti dari adaptor ini adalah chip expander I/O 8-bit – PCF8574. Chip ini
mengubah data I2C dari Arduino menjadi data paralel yang diperlukan untuk
layar LCD.
Papan juga menyertakan trimpot kecil untuk membuat penyesuaian yang
tepat pada kontras tampilan.

Ada pelompat di papan yang memberikan daya ke lampu latar. Untuk


mengontrol intensitas lampu latar, Anda dapat melepas jumper dan
menerapkan voltase eksternal ke pin header berlabel 'LED'.

I2C Address of LCD


Jika Anda memiliki beberapa perangkat pada bus I2C yang sama, Anda
mungkin perlu menyetel alamat I2C yang berbeda untuk adaptor LCD agar
tidak bentrok dengan perangkat I2C lainnya.

Untuk tujuan ini, adaptor dilengkapi dengan tiga jumper/bantalan solder (A0,
A1, dan A2). Alamat disetel saat jumper disingkat dengan gumpalan solder.
Poin penting untuk diperhatikan di sini adalah bahwa beberapa perusahaan,
termasuk Texas Instruments dan NXP Semiconductors, memproduksi chip
PCF8574 yang sama. Dan alamat I2C LCD Anda tergantung pada pabrikan
chip.

Jika LCD Anda memiliki chip PCF8574 dari Texas Instruments:

Menurut lembar data Texas Instruments , tiga bit pemilihan alamat (A0, A1,
dan A2) terletak di ujung register alamat I2C 7-bit.

Karena ada tiga input alamat yang dapat menggunakan dua status, baik
TINGGI atau RENDAH, delapan (2^3) kombinasi (alamat) yang berbeda
dimungkinkan.

Ketiga input alamat ditarik TINGGI menggunakan penarikan onboard. Ini


memberi PCF8574 alamat I2C default 0x27.

Saat Anda menyingkat jumper solder, Anda menarik input alamat itu
RENDAH. Jika Anda menyingkat ketiga jumper, alamatnya adalah 0x20. Jadi
rentang semua kemungkinan alamat berkisar dari 0x20 hingga 0x27.

Anda dapat mengatur alamat I2C yang berbeda, sesuai dengan tabel di bawah
ini.
Jika LCD Anda memiliki chip PCF8574 NXP:

Menurut lembar data Semikonduktor NXP , tiga bit pemilihan alamat (A0, A1,
dan A2) terletak di ujung register alamat I2C 7-bit. Namun, bit yang tersisa di
register alamat berbeda.

Karena ada tiga input alamat yang dapat menggunakan dua status, baik
TINGGI atau RENDAH, delapan (2^3) kombinasi (alamat) yang berbeda
dimungkinkan.

Ketiga input alamat ditarik TINGGI menggunakan penarikan onboard. Ini


memberi PCF8574 alamat I2C default 0x3F.

Saat Anda menyingkat jumper solder, Anda menarik input alamat itu
RENDAH. Jika Anda mempersingkat ketiga jumper, alamatnya adalah
0x38. Jadi rentang semua kemungkinan alamat berkisar dari 0x38 hingga 0x3F.

Anda dapat mengatur alamat I2C yang berbeda, sesuai dengan tabel di bawah
ini.

Jadi alamat I2C LCD Anda kemungkinan besar 0x27 atau 0x3F. Jika Anda tidak
yakin apa alamat I2C LCD Anda, ada cara mudah untuk mengetahuinya. Anda
akan mempelajarinya nanti di tutorial ini.
I2C LCD Display Pinout
Layar LCD I2C hanya memiliki empat pin. berikut pinoutnya :

GNDadalah pin ground.


VCCadalah pin catu daya. Hubungkan ke output 5V dari Arduino atau catu
daya 5V eksternal.
SDAadalah pin data I2C.
SCLadalah pin jam I2C.

Menyambungkan Layar LCD I2C ke kontroler


Menghubungkan LCD I2C jauh lebih sederhana daripada menghubungkan
LCD standar. Anda hanya perlu menghubungkan empat pin.

Mulailah dengan menghubungkan pin VCC ke output 5V Arduino dan pin


GND ke ground.

Sekarang tinggal pin yang digunakan untuk komunikasi I2C. Perhatikan bahwa


setiap papan ESP32 atau arduino memiliki pin I2C berbeda yang harus
dihubungkan dengan benar. Pada papan Arduino dengan tata letak R3, SDA
(jalur data) dan SCL (jalur jam) berada di header pin yang dekat dengan pin
AREF. Mereka juga disebut sebagai A5 (SCL) dan A4 (SDA).

Lihat tabel di bawah ini untuk referensi cepat.


Kontroler SCL SDA

ESP32 22 21

Arduino Uno A5 A4

Arduino nano A5 A4

Arduino Mega 21 20

Leonardo/
3 2
Mikro

Fungsi lainnya dari LiquidCrystal_I2C Library


Ada banyak fungsi berguna yang dapat Anda gunakan dengan Objek
LiquidCrystal_I2C. Beberapa dari mereka terdaftar di bawah ini:

 lcd.home() fungsi
memposisikan kursor di kiri atas LCD tanpa
mengosongkan layar.

 lcd.blink() fungsi
menampilkan blok berkedip berukuran 5x8 piksel pada
posisi di mana karakter berikutnya akan ditulis.

 lcd.noBlink() fungsi mematikan kursor LCD yang berkedip.

 lcd.cursor() fungsi
menampilkan garis bawah (garis) pada posisi di mana
karakter berikutnya akan ditulis.

 lcd.noCursor() fungsi menyembunyikan kursor LCD.

 lcd.scrollDisplayRight() fungsi
menggulir konten tampilan satu ruang ke
kanan. Jika Anda ingin teks bergulir terus menerus, Anda harus
menggunakan fungsi ini di dalam satu  for lingkaran.

 lcd.scrollDisplayLeft() fungsi menggulir konten tampilan satu ruang ke


kiri. Mirip dengan fungsi di atas, gunakan ini di dalam  for lingkaran
untuk pengguliran terus menerus.
 lcd.noDisplay() fungsimematikan tampilan LCD, tanpa kehilangan teks
yang saat ini ditampilkan di atasnya.

 lcd.display() fungsimenyalakan layar LCD, setelah dimatikan


dengan  noDisplay() . Ini akan memulihkan teks (dan kursor) yang ada di
layar.

Menyesuaikan Kontras LCD


Setelah kabel LCD, Anda perlu menyesuaikan kontras LCD. Pada modul I2C
terdapat potensiometer yang dapat diputar dengan obeng kecil.

Sekarang, nyalakan Arduino. Anda akan melihat lampu latar menyala. Saat


Anda memutar kenop potensiometer, baris persegi panjang pertama akan
muncul. Jika Anda sudah sampai sejauh ini, Selamat! LCD Anda berfungsi
dengan baik.

Latihan :

1. Buatlah program I2C scanner berikut.


#include <Wire.h>

void setup() {
Wire.begin();

Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}

void loop() {
int nDevices = 0;

Serial.println("Scanning...");

for (byte address = 1; address < 127; ++address) {


// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
byte error = Wire.endTransmission();

if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.print(address, HEX);
Serial.println(" !");

++nDevices;
} else if (error == 4) {
Serial.print("Unknown error at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.println(address, HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
} else {
Serial.println("done\n");
}
delay(5000); // Wait 5 seconds for next scan
}

Setelah Anda mengunggah sketsa, luncurkan monitor serial pada 9600


baud. Anda harus melihat alamat I2C dari layar LCD I2C Anda.

Harap catat alamat ini. Anda akan membutuhkannya dalam contoh


selanjutnya.

'Hello World!
Sketsa pengujian di bawah ini akan mencetak 'Hello World!' di baris pertama
LCD dan 'Tutorial LCD' di baris kedua.

Namun, sebelum Anda mengunggah sketsa, Anda harus melakukan sedikit


perubahan untuk membuatnya bekerja untuk Anda. Anda harus meneruskan
alamat I2C LCD Anda serta dimensi tampilan ke konstruktor
LiquidCrystal_I2C. Jika Anda menggunakan LCD karakter 16×2, lewati 16 dan
2; jika Anda menggunakan LCD karakter 20x4, berikan 20 dan 4.

// enter the I2C address and the dimensions of your LCD here
LiquidCrystal_I2C lcd(0x3F, 16, 2);

2. Buatlah program Hello World! berikut.


#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2); // set the LCD address to 0x3F


for a 16 chars and 2 line display

void setup() {
lcd.init();
lcd.clear();
lcd.backlight(); // Make sure backlight is on

// Print a message on both lines of the LCD.


lcd.setCursor(2,0); //Set cursor to character 2 on line 0
lcd.print("Hello world!");

lcd.setCursor(2,1); //Move cursor to character 2 on line 1


lcd.print("LCD Tutorial");
}

void loop() {
}

Inilah yang harus Anda lihat di layar.

Antarmuka OLED
Layar OLED ESP32
Panduan ini menunjukkan cara menggunakan layar OLED SSD1306 0,96
inci dengan ESP32 menggunakan Arduino IDE. Kami akan menunjukkan
kepada Anda cara menulis teks, mengatur font yang berbeda,
menggambar bentuk, dan menampilkan gambar bitmap.

Memperkenalkan Layar OLED 0,96


inci
Layar OLED yang akan kita gunakan dalam tutorial ini adalah model
SSD1306: layar satu warna, 0,96 inci dengan 128×64 piksel seperti yang
ditunjukkan pada gambar berikut.

Layar OLED tidak memerlukan lampu latar, yang menghasilkan kontras


yang sangat bagus di lingkungan yang gelap. Selain itu, pikselnya hanya
mengonsumsi energi saat aktif, sehingga layar OLED mengonsumsi lebih
sedikit daya jika dibandingkan dengan layar lainnya.
Model yang kami gunakan memiliki empat pin dan berkomunikasi dengan
mikrokontroler mana pun menggunakan protokol komunikasi I2C. Ada
model yang dilengkapi dengan pin RESET ekstra atau yang berkomunikasi
menggunakan protokol komunikasi SPI.

Layar OLED Kabel Pin SSD1306


Karena layar OLED menggunakan protokol komunikasi I2C, pemasangan
kabel sangat sederhana. Anda dapat menggunakan tabel berikut sebagai
referensi.
Pin ESP32

Vin 3.3V
GND GND
SCL GPIO 22
SDA GPIO 21

Sebagai alternatif, Anda dapat mengikuti diagram skematik berikutnya


untuk menyambungkan ESP32 ke layar OLED.

Dalam contoh ini, kami menggunakan protokol komunikasi I2C. Pin yang


paling cocok untuk komunikasi I2C di ESP32 adalahGPIO 22(SCL)
danGPIO 21(SDA).
Jika Anda menggunakan layar OLED dengan protokol komunikasi SPI,
gunakan GPIO berikut.
 GPIO 18: CLK
 GPIO19: MISO
 GPIO 23: MOSI
 GPIO 5: CS

Menginstal Perpustakaan OLED


SSD1306 – ESP32
Ada beberapa pustaka yang tersedia untuk mengontrol tampilan OLED
dengan ESP32. Dalam tutorial ini kita akan menggunakan dua library
Adafruit: library Adafruit_SSD1306 dan library Adafruit_GFX .
Ikuti langkah selanjutnya untuk menginstal pustaka tersebut.
1. Buka Arduino IDE Anda dan pergi ke  Sketsa  >  Sertakan
Perpustakaan  >  Kelola Perpustakaan . Manajer Perpustakaan harus
terbuka.
2. Ketik “ SSD1306 ” di kotak pencarian dan instal perpustakaan SSD1306
dari Adafruit.

3. Setelah menginstal library SSD1306 dari Adafruit, ketik “ GFX ” di kotak


pencarian dan instal library tersebut.
4. Setelah menginstal library, restart Arduino IDE Anda.

Menggunakan Font Lain – Layar


OLED
Pustaka Adafruit GFX memungkinkan kita untuk menggunakan beberapa
font alternatif selain font bawaan. Ini memungkinkan Anda untuk memilih
antara Serif, Sans, dan Mono. Setiap font tersedia dalam huruf tebal,
miring, dan dalam berbagai ukuran.
Ukurannya ditentukan oleh font
sebenarnya. SehinggasetTextUkuran()metode tidak berfungsi dengan
font ini. Font tersedia dalam ukuran 9, 12, 18 dan 24 poin dan juga berisi
karakter 7-bit (kode ASCII) (dijelaskan sebagai 7b pada nama font).
Anda dapat memilih dari pilihan font berikutnya:

FreeMono12pt7b.h FreeSansBoldOblique12pt7b.h
FreeMono18pt7b.h FreeSansBoldOblique18pt7b.h
FreeMono24pt7b.h FreeSansBoldOblique24pt7b.h
FreeMono9pt7b.h FreeSansBoldOblique9pt7b.h
FreeMonoBold12pt7b.h FreeSansOblique12pt7b.h
FreeMonoBold18pt7b.h FreeSansOblique18pt7b.h
FreeMonoBold24pt7b.h FreeSansOblique24pt7b.h
FreeMonoBold9pt7b.h FreeSansOblique9pt7b.h
FreeMonoBoldOblique12pt7b.h FreeSerif12pt7b.h
FreeMonoBoldOblique18pt7b.h FreeSerif18pt7b.h
FreeMonoBoldOblique24pt7b.h FreeSerif24pt7b.h
FreeMonoBoldOblique9pt7b.h FreeSerif9pt7b.h
FreeMonoOblique12pt7b.h FreeSerifBold12pt7b.h
FreeMonoOblique18pt7b.h FreeSerifBold18pt7b.h
FreeMonoOblique24pt7b.h FreeSerifBold24pt7b.h
FreeMonoOblique9pt7b.h FreeSerifBold9pt7b.h
FreeSans12pt7b.h FreeSerifBoldItalic12pt7b.h
FreeSans18pt7b.h FreeSerifBoldItalic18pt7b.h
FreeSans24pt7b.h FreeSerifBoldItalic24pt7b.h
FreeSans9pt7b.h FreeSerifBoldItalic9pt7b.h
FreeSansBold12pt7b.h FreeSerifItalic12pt7b.h
FreeSansBold18pt7b.h FreeSerifItalic18pt7b.h
FreeSansBold24pt7b.h FreeSerifItalic24pt7b.h
FreeSansBold9pt7b.h FreeSerifItalic9pt7b.h

Font yang berfungsi lebih baik dengan tampilan OLED berukuran 9 dan 12
poin.
Untuk menggunakan salah satu font tersebut, pertama-tama Anda harus
memasukkannya ke dalam sketsa Anda, misalnya:
#include <Fonts/FreeSerif12pt7b.h>
Selanjutnya, Anda hanya perlu menggunakansetFont()metode dan
berikan sebagai argumen, font yang ditentukan:
display.setFont(&FreeSerif12pt7b);
Setelah menentukan font, semua metode untuk menulis teks akan
menggunakan font tersebut. Untuk kembali menggunakan font asli, Anda
hanya perlu memanggilsetFont()metode tanpa argumen:
display.setFont();
Latihan

1. Program Hello World

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

#define SCREEN_WIDTH 128


#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  Serial.begin(115200);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(20, 10);
  // Display static text
  display.println("Hello, world!");
  display.display();
}

void loop() {
 
}

2. Program Scrolling Text

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

#define SCREEN_WIDTH 128 // OLED display width, in pixels


#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)


Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  Serial.begin(115200);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for


128x64
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  // Display static text
  display.println("Scrolling Hello");
  display.display();
  delay(100);
 
}
void loop() {
  // Scroll in various directions, pausing in-between:
  display.startscrollright(0x00, 0x0F);
  delay(2000);
  display.stopscroll();
  delay(1000);
  display.startscrollleft(0x00, 0x0F);
  delay(2000);
  display.stopscroll();
  delay(1000);
  display.startscrolldiagright(0x00, 0x07);
  delay(2000);
  display.startscrolldiagleft(0x00, 0x07);
  delay(2000);
  display.stopscroll();
  delay(1000);
}

Anda mungkin juga menyukai