Daftar Isi:

Tampilan OLED I2C Tutorial Arduino/NodeMCU: 15 Langkah
Tampilan OLED I2C Tutorial Arduino/NodeMCU: 15 Langkah

Video: Tampilan OLED I2C Tutorial Arduino/NodeMCU: 15 Langkah

Video: Tampilan OLED I2C Tutorial Arduino/NodeMCU: 15 Langkah
Video: Tutorial on I2C OLED Display with Arduino/NodeMCU 2024, November
Anonim
Image
Image

Program pertama yang Anda tulis ketika Anda mulai belajar

bahasa pemrograman baru adalah: "Hello World!".

Program itu sendiri tidak lebih dari mencetak teks "Hello World" di layar.

Jadi, bagaimana kita membuat Arduino kita menampilkan "Hello World!"?

Dalam video ini, saya akan menunjukkan cara memulai dengan layar OLED I2C kecil 0,91 (128x32) dan 0,96 (128x64).

Ada 100-an tutorial di web yang menjelaskan hal yang sama dengan cara yang berbeda, tetapi saya tidak dapat menemukan satu pun yang memberi tahu saya semua tentang tampilan OLED dan cara menggunakannya dalam skenario yang berbeda. Butuh beberapa waktu bagi saya untuk menyelesaikan semuanya. Jadi, saya pikir saya harus membuat tutorial tentang apa yang telah saya pelajari dan menggabungkan semua fitur dan cara tampilan OLED dapat digunakan dalam proyek kami.

Langkah 1: Hal-Hal yang Akan Kita Pelajari Hari Ini

Persyaratan Perangkat Keras
Persyaratan Perangkat Keras

Di video kali ini kita akan membahas tentang:

- Apa itu layar OLED?

- Kemudian kita akan melihat lebih dekat pada layar OLED I2C 0,91 (128x32) dan 0,96 (128x64)

- Selanjutnya kita akan berbicara tentang menginstal Perpustakaan Adafruit ke Arduino IDE Anda

- Kemudian kita akan menghubungkan NodeMCU dan Arduino ke tampilan OLED

- Selanjutnya kita akan melihat kode dan menampilkan beberapa grafik dan teks di atasnya

- Kami juga akan berbicara tentang menerapkan Font Kustom dan menampilkan Gambar

- Kemudian kita akan menghubungkan Beberapa OLED ke mikrokontroler menggunakan I2C Multiplexer

- Akhirnya, kita akan berbicara tentang beberapa kesalahan umum yang dilakukan orang saat menggunakan layar OLED

Langkah 2: Persyaratan Perangkat Keras

Untuk tutorial ini kita membutuhkan:

- Papan tempat memotong roti

- Layar OLED I2C 0,91" (128x32) dan 0,96" (128x64)

- Arduino UNO/NANO (apa pun yang berguna)

- NodeMCU

- Multiplexer TCA9548A I2C

- Beberapa Kabel Penghubung

- dan kabel USB untuk mengunggah kode

Langkah 3: Apa itu Layar OLED?

Apa itu Layar OLED?
Apa itu Layar OLED?
Apa itu Layar OLED?
Apa itu Layar OLED?

OLED atau dioda pemancar cahaya organik adalah pemancar cahaya

dioda (LED) di mana lapisan electroluminescent memancarkan adalah film senyawa organik (jutaan lampu LED kecil) yang memancarkan cahaya sebagai respons terhadap arus listrik.

OLED digunakan untuk membuat tampilan digital di perangkat seperti layar televisi, monitor komputer, sistem portabel seperti ponsel, konsol game genggam, dan PDA. Layar OLED berfungsi tanpa lampu latar karena memancarkan cahaya tampak.

Langkah 4:

Gambar
Gambar

Ada banyak jenis layar OLED yang tersedia di

pasar berdasarkan mereka

- Ukuran

- Warna

- Merek

- Protokol

- SPI (Serial Peripheral Interface) atau I2C

- Skema kontrol matriks pasif (PMOLED) atau matriks aktif (AMOLED)

Dalam tutorial ini, saya akan berbicara tentang menghubungkan

warna biru 0,91 (128x32 OLED) dan 0,96 (128x64 OLED) I2C OLDE ditampilkan ke Arduino NANO dan NodeMCU. Teknologi bus I2C hanya menggunakan 2 pin MCU sehingga kami memiliki tumpukan yang tersedia untuk sensor lain.

Langkah 5: Lihat Lebih Dekat

Lihat Lebih Dekat
Lihat Lebih Dekat
Lihat Lebih Dekat
Lihat Lebih Dekat
Lihat Lebih Dekat
Lihat Lebih Dekat

Mari kita lihat lebih dekat pada dua tampilan ini.

Di bagian belakang layar ini terdapat tumpukan kapasitor dan resistor SMD yang disolder; tetapi, karena ini adalah perangkat I2C, kami hanya peduli dengan 2 pin ini (SCL dan SDA)

Layar terhubung ke Arduino hanya menggunakan empat kabel – dua untuk daya (VCC dan GND) dan dua untuk data (jam serial SCL dan

data serial SDA), membuat pengkabelan menjadi sangat sederhana. Koneksi datanya adalah I2C (I²C, IIC atau Inter-Integrated Circuit) dan antarmuka ini disebut juga TWI (Two Wire Interface).

- Pin on-board bisa dalam urutan yang berbeda, jadi selalu periksa tiga kali sebelum menghubungkannya ke proyek Anda.

- Tegangan operasi antara 3v hingga 5v tetapi, yang terbaik adalah menggunakan panduan dari lembar data pabrikan.

- Terkadang kita perlu menggunakan 2 tampilan dalam proyek kita. Jadi, bagaimana kita bisa mencapai ini?

Triknya adalah memiliki alamat yang dapat dikonfigurasi di layar Anda. Unit ini memiliki alamat yang dapat dikonfigurasi antara 0x78 dan 0x7A. Hanya dengan melepas solder resistor 0Ohm dari satu sisi dan menghubungkannya ke sisi lain atau hanya dengan memasang solder global kita dapat mengubah alamatnya. Kita akan membicarakannya secara mendalam ketika kita menghubungkan beberapa tampilan ke Arduino di bagian selanjutnya dari tutorial ini.

Dalam gambar, pajangan ini terlihat sangat besar. Tapi, praktis berbicara mereka kecil. Mereka terbuat dari 128 x 32/64 piksel OLED individu dan tidak memerlukan lampu latar. Lihat saja ini dan lihat betapa kecilnya itu. Meskipun kecil, mereka bisa sangat berguna dalam proyek elektronik apa pun.

Langkah 6: Perpustakaan

Perpustakaan
Perpustakaan
Perpustakaan
Perpustakaan
Perpustakaan
Perpustakaan

Ada beberapa perpustakaan yang tersedia untuk mengontrol ini

menampilkan. Di masa lalu saya telah menggunakan "perpustakaan u8glib" tetapi saya menemukan perpustakaan AdaFruit sangat mudah dipahami dan digunakan dalam proyek kami. Jadi, saya akan menggunakan library AdaFruit dalam tutorial ini.

Untuk mengontrol tampilan OLED, Anda memerlukan pustaka "adafruit_GFX.h" dan pustaka "adafruit_SSD1306.h".

Ada dua cara Anda dapat mengunduh dan menginstal perpustakaan ke Arduino IDE Anda.

Metode 1

Buka "Manajer perpustakaan" dan cari "adafruit_SSD1306" dan "adafruit_gfx"

Pilih versi terbaru dan tekan tombol Install.

Setelah terinstal, Anda dapat menggunakan pustaka ini di program Anda.

Metode 2

Kedua perpustakaan ini juga dapat diunduh dari github (Anda membutuhkan keduanya):

Saya akan memberikan tautan dalam deskripsi di bawah ini.

Pustaka tampilan:

Perpustakaan GFX:

Setelah diunduh, salin folder master Adafruit_SSD1306 dari file zip yang diunduh ke folder perpustakaan Arduino. Folder ini biasanya ditemukan di Documents > Arduino > library pada sistem Windows. Di Linux biasanya ditemukan di folder rumah > Arduino > perpustakaan. Terakhir di folder library Arduino, ganti nama folder Adafruit_SSD1306-master menjadi Adafruit_SSD1306. Bahkan jika Anda tidak mengganti nama itu baik-baik saja.

Langkah 7:

Gambar
Gambar

Sekarang, mari kita lihat "Adafruit_SSD1306.h"

mengajukan

Dua hal yang perlu kita ketahui di perpustakaan ini:

1. Jika Anda ingin menggunakan tampilan yang lebih kecil gunakan default 128_32 sebaliknya untuk tampilan yang lebih besar beri komentar 128_32 dan batalkan komentar pada 128_64

2. Jika Anda telah menyolder Alamat 0x7A di papan (yang akan kita bicarakan nanti) maka gunakan alamat 0x3D 7 bit untuk tampilan yang lebih besar, jika tidak gunakan alamat 0x3C default. Untuk tampilan yang lebih kecil, alamatnya adalah 0x3C.

Langkah 8: Pengkabelan 128 X 64/32 OLED

Pengkabelan 128 X 64/32 OLED
Pengkabelan 128 X 64/32 OLED

Mari kita mulai dengan menghubungkan NodeMCU ke layar.

Hal pertama dan paling penting untuk diperhatikan adalah bahwa beberapa tampilan mungkin memiliki pin daya GND dan VCC yang bertukar. Periksa tampilan Anda untuk memastikan sama dengan gambar. Jika pin ditukar, pastikan untuk mengubah koneksi ke Arduino atau NodeMCU.

- Kabel OLED NodeMCU

OLED VCC – NodeMCU 3.3V

OLED GND – NodeMCU GND

OLED SCL – NodeMCU D1

OLED SDA – NodeMCU D2

- Kabel OLED Arduino Uno

OLED VCC – Arduino 5V

OLED GND – Arduino GND

OLED SCL – Arduino Uno A5

OLED SDA – Arduino Uno A4

- Kabel OLED Arduino MEGA 2560

OLED VCC – Arduino 5V

OLED GND – Arduino GND

OLED SCL – Arduino MEGA 2560 pin 21

OLED SDA – Arduino MEGA 2560 pin 20

Langkah 9: Kode

Kode
Kode
Kode
Kode
Kode
Kode
Kode
Kode

Pustaka Adafruit hadir dengan contoh yang sangat bagus untuk keduanya

128x32 dan 128x64 tampilan.

Perpustakaan terletak di bawah File > Contoh > Adafruit SSD1306 > dan kemudian jenis tampilan di Arduino IDE.

Kita akan menggunakan contoh I2C 128x32 dan akan memodifikasinya agar berfungsi dengan tampilan 128x64 dan 128x32 dengan menghubungkannya ke Arduino dan kemudian ke papan NodeMCU.

Kode dimulai dengan memasukkan kedua pustaka Adafruit. Dalam tutorial ini saya hanya akan menekankan pada bagian-bagian kode yang diperlukan bagi kita untuk memuat di kedua papan dan layar. Jika Anda ingin tahu lebih banyak tentang kode tersebut, silakan beri komentar di blog saya atau di bagian komentar di bawah dan saya berusaha untuk menghubungi Anda kembali.

- Pertama kita akan memuat kode ke Arduino Nano yang terhubung ke layar 128x32.

Kita dapat menggunakan kode apa adanya tanpa modifikasi apapun.

128x32 menggunakan alamat 0x3C jadi bit ini terlihat bagus di sini, mari kita periksa pustaka header, ya itu juga menggunakan alamat 0x3C dan tipe tampilannya adalah 128x32.

- Sekarang mari kita sambungkan layar 128x64. Seperti yang kita ketahui menggunakan alamat 0x3C secara default sehingga kita tidak perlu memperbarui alamat baik dalam kode atau perpustakaan.

Kita hanya perlu mengomentari 128_32 dan menghapus komentar pada 128_64 di pustaka header dan mengubah LCDHEIGHT menjadi 64 dalam kode kita.

- Sekarang untuk menjalankan kode yang sama pada NodeMCU kita perlu mengubah satu baris lagi dalam kode kita.

Kode "#define OLED_RESET 4" > "#define OLED_RESET LED_BUILTIN" sama dengan Arduino

Cukup banyak untuk menampilkan apa pun yang pertama-tama kita perlukan untuk menghapus layar sebelumnya menggunakan

tampilan.clearDisplay(); // Hapus buffer

Kemudian gambar objeknya

tesdrawline(); // Gambar garis

Tunjukkan di perangkat keras

tampilan.tampilan(); // Buat mereka terlihat di perangkat keras tampilan!

Tunggu beberapa saat sebelum menampilkan item berikutnya.

penundaan(2000); // Tunggu selama 2 detik

Dalam contoh ini kami menampilkan beberapa item seperti teks, garis, lingkaran, teks bergulir, segitiga dan banyak lagi. Silakan dan gunakan imajinasi Anda dan tampilkan apa pun yang Anda inginkan di layar kecil ini.

Langkah 10: Menyesuaikan Teks & Menambahkan Gambar

Menyesuaikan Teks & Menambahkan Gambar
Menyesuaikan Teks & Menambahkan Gambar
Menyesuaikan Teks & Menambahkan Gambar
Menyesuaikan Teks & Menambahkan Gambar
Menyesuaikan Teks & Menambahkan Gambar
Menyesuaikan Teks & Menambahkan Gambar

Terkadang kode Anda perlu menampilkan font khusus dan

gambar-gambar. Jika Anda sangat baik dalam pemetaan bit maka Anda hanya perlu membuat array byte dengan menyalakan atau mematikan LED kecil pada layar untuk membuat font dan gambar khusus.

Namun, saya tidak terlalu baik dalam melakukan pemetaan ini dan tidak ingin menghabiskan waktu berjam-jam untuk membuat tabel peta bit.

Jadi, apa pilihan saya? Saya biasanya menggunakan dua situs web untuk menghasilkan font dan gambar khusus. Tautan disediakan dalam deskripsi di bawah ini.

Font Kustom

Buka situs web pengonversi font, pilih keluarga font, gaya, ukuran, Versi Perpustakaan sebagai "Adafruit GFX Font" dan kemudian tekan tombol "Buat". Di sisi kanan halaman ini Anda dapat melihat bagaimana font Anda akan terlihat seperti pada tampilan sebenarnya.

Berdasarkan pilihan Anda, halaman web menghasilkan file header font. Buat file bernama "modified_font.h" di folder yang sama di mana kode Anda berada dan salin dan simpan kode yang dihasilkan ke dalamnya. Maka Anda hanya perlu memasukkan file header dalam kode Anda untuk menggunakan font khusus.

#sertakan "modified_font.h"

Kemudian, Anda hanya perlu mengatur font sebelum menampilkan teks untuk menerapkan font kustom ke dalamnya.

display.setFont(&Nama_Font_Anda);

Anda bisa mendapatkan nama font dari file header yang baru saja Anda tambahkan ke proyek Anda. Itu saja, mudah.

Memori selalu menjadi perhatian saat menggunakan font khusus, jadi selalu pertimbangkan byte yang akan dikonsumsi oleh memori. Ingat saja Arduino UNO hanya memiliki memori 32K.

Gambar Kustom

Untuk menampilkan gambar bitmap di layar Anda, pertama-tama Anda harus membuat gambar berukuran 128 x 64/32.

Saya menggunakan "MS Paint" lama yang bagus untuk membuat gambar bitmap 128 x 64 yang kemudian akan saya unggah ke situs web konverter gambar ini. Situs web mengubah gambar menjadi byte-string, yang dapat digunakan dengan tampilan Arduino dan OLED.

Mulailah dengan mengunggah gambar ke situs web. Kemudian beri tanda centang pada kotak centang "Balikkan warna gambar" dan ubah "Format kode keluaran" menjadi "Kode Arduino" selanjutnya pilih orientasi dan tekan tombol "Hasilkan Kode" untuk menghasilkan array byte. Bagian "Pratinjau" menunjukkan kepada Anda bagaimana gambar Anda akan terlihat pada tampilan sebenarnya.

Saya telah menyertakan kode bersama dengan tutorial ini yang dapat Anda gunakan untuk menampilkan gambar Anda. Anda hanya perlu mengganti array dalam kode saya dengan yang baru saja Anda buat dan kemudian memuatnya ke Arduino Anda.

Langkah 11: Menghubungkan 2 Tampilan

Menghubungkan 2 Layar
Menghubungkan 2 Layar
Menghubungkan 2 Tampilan
Menghubungkan 2 Tampilan

Menghubungkan dua layar 128 x 64 ke proyek Anda sangatlah mudah.

Anda hanya perlu melepas solder resistor 0Ohm dari alamat 0x78 dan meletakkannya di 0x7A dan kemudian menggunakan alamat 0x3D dalam kode Anda alih-alih 0x3C default.

Anda pasti bertanya-tanya mengapa kami menggunakan alamat 0x3C dan 0x3D dan bukan 0x78 dan 0x7A yang sebenarnya. Arduino menerima alamat 7-bit dan bukan alamat perangkat keras 8-bit. Jadi, pertama-tama kita perlu mengonversi alamat 8-bit ke biner, dan kemudian memotong bit yang paling tidak signifikan untuk mendapatkan 7 bit. Kemudian konversikan 7 bit ke HEX untuk mendapatkan alamat 0x3C atau 0x3D yang Anda masukkan dalam kode Anda.

Pertama, inisialisasi tampilan dengan memberinya nama unik:

Adafruit_SSD1306 tampilan1(OLED_REST);

Adafruit_SSD1306 tampilan2(OLED_REST);

Kemudian dalam kode Anda gunakan tampilan 1 dan tampilan 2 untuk memanggil pernyataan awal dengan alamat perangkat di dalamnya:

tampilan1.begin(SSD1306_SWITCHCAPVCC, 0x3C); // tampilkan 1 alamat op 0x3C

display2.begin(SSD1306_SWITCHCAPVCC, 0x3D); // tampilkan 2 alamat operasi 0x3D

Itu saja, Anda sekarang dapat melanjutkan dan melakukan apa pun yang Anda inginkan menggunakan Display 1 atau Display 2 di sisa kode Anda. Saya telah memberikan contoh dengan tutorial ini.

Pengkabelan persis sama dengan apa yang telah kita lakukan sebelumnya, cukup banyak Anda hanya perlu menambahkan tampilan lain ke pin I2C yang sama dari Arduino atau NodeMCU. Berdasarkan alamat tersebut, MCU kemudian mengirimkan data pada jalur data I2C.

Langkah 12: Menghubungkan Lebih dari 2 Tampilan

Menghubungkan Lebih dari 2 Tampilan
Menghubungkan Lebih dari 2 Tampilan
Menghubungkan Lebih dari 2 Tampilan
Menghubungkan Lebih dari 2 Tampilan
Menghubungkan Lebih dari 2 Tampilan
Menghubungkan Lebih dari 2 Tampilan

Sekarang, bagaimana jika Anda ingin menghubungkan lebih dari 2 layar?

Arduino memiliki jumlah pin yang terbatas dan karenanya Anda tidak dapat memiliki lebih dari sejumlah pelindung yang terpasang padanya. Selain itu, hanya memiliki satu pasang bus I2C.

Jadi, bagaimana kita bisa memasang lebih dari 2 layar I2C ke Arduino? Caranya adalah dengan menggunakan Multiplexer TCA9548.

TCA9548 memungkinkan mikrokontroler tunggal untuk berkomunikasi dengan hingga '64 sensor' semua dengan alamat I2C yang sama atau berbeda dengan menetapkan saluran unik untuk setiap sub-bus budak sensor.

Ketika kita berbicara tentang mengirim data melalui 2 kabel ke beberapa perangkat, kita memerlukan cara untuk mengatasinya. Sama seperti tukang pos yang datang di satu jalan dan menjatuhkan paket surat ke rumah yang berbeda karena mereka memiliki alamat yang berbeda tertulis di atasnya.

Multiplexer terhubung ke jalur 3V3, GND, SDA dan SCL dari mikrokontroler. Sensor slave terhubung ke salah satu dari delapan port slave SCL/SDA pada board. Saluran dipilih dengan mengirimkan TCA9548A alamat I2C-nya (0x70 {default} - 0x77) diikuti dengan nomor saluran (0b00000001 - 0b10000000). Anda dapat memiliki maksimal 8 multiplekser ini yang terhubung bersama pada alamat 0x70-0x77 untuk mengontrol 64 bagian yang dialamatkan I2C yang sama. Dengan menghubungkan tiga bit alamat A0, A1 dan A2 ke VIN, Anda bisa mendapatkan kombinasi alamat yang berbeda. Saya akan menjelaskan ini secara mendalam dalam tutorial saya berikutnya tentang papan breakout TCA9548A. Untuk saat ini, mari kita sambungkan 8 OLED ke board ini dan lihat kodenya dengan cepat.

Koneksi:

VIN ke 5V (atau 3.3V)

GND ke tanah

Jam SCL ke I2C

Data SDA ke I2C

Kemudian pasang sensor ke VIN, GND dan gunakan salah satu bus multipleks SCn / SDn

Sekarang, kode Int mari kita mulai dengan memasukkan pustaka "Wire" dan dengan mendefinisikan alamat multiplexer.

#sertakan "Wire.h"

#termasuk

#define MUX_Address 0x70 // Alamat Encoder TCA9548A

Kemudian kita perlu memilih port yang ingin kita komunikasikan dan mengirim data menggunakan fungsi ini:

batal tcaselect(uint8_t i) {

jika (i > 7) kembali;

Wire.beginTransmission(MUX_Address);

Kawat.tulis(1 << i);

Kawat.endTransmisi();

}

Selanjutnya kita akan menginisialisasi tampilan pada bagian setup dengan memanggil "u8g.begin();" untuk setiap tampilan yang dilampirkan ke MUX "tcaselect(i);"

Setelah diinisialisasi, kita dapat melakukan apapun yang kita inginkan hanya dengan memanggil fungsi "tcaselect(i);" di mana "i" adalah nilai dari bus multipleks dan kemudian mengirimkan data dan jam yang sesuai.

Langkah 13: Keuntungan dan Kerugian

Keuntungan dan kerugian
Keuntungan dan kerugian

Gambar OLED itu indah. Namun, OLED juga memiliki

kerugian. Karena layar OLED mengandung bahan organik, masa pakainya lebih pendek daripada layar LCD. Selain itu, banyak layar OLED mengalami burn-in setelah menampilkan gambar yang sama untuk waktu yang lama. Setelah burn-in, gambar tetap di layar bahkan setelah menampilkan gambar lain. Jadi, pastikan Anda terus menyegarkan layar setiap beberapa detik. Air dapat langsung merusak bahan organik dari pajangan ini.

Keuntungan

Tidak perlu lampu latar

Layar sangat tipis dan ringan

Konsumsi daya rendah

Sudut pandang lebih lebar dari LCD

Kecerahan dan kontrasnya bagus

Kecepatan tinggi dan waktu respons rendah

Warna hitam pekat

Kekurangan

Teknologi mahal

Siklus hidup pendek

OLEDS lebih cenderung terbakar

Kerusakan air

Langkah 14: Kesalahan Umum

Kesalahan Umum
Kesalahan Umum

Untuk mengakhiri tutorial mari kita bicara tentang beberapa kesalahan umum

orang membuat saat menggunakan tampilan ini:

- Selalu periksa pin tiga kali sebelum menggunakannya di proyek Anda

- Ambil alamat perpustakaan yang tepat di file header dan dalam kode Anda

#define SSD1306_I2C_ADDRESS 0x3C // di Adafruit_SSD1306.h

dan

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // dalam kode Anda

Jika alamatnya salah, OLED tidak akan menampilkan apa pun

- Ukuran tampilan harus diubah pada driver sebelum dapat digunakan. Jika tidak diubah, Anda akan mendapatkan pesan kesalahan saat mencoba memverifikasi kode

#error("Tinggi salah, tolong perbaiki Adafruit_SSD1306.h!");

- Jika menggunakan NodeMCU pastikan Anda mengganti OLED_RESET dari 4 menjadi LED_BUILTIN

#define OLED_RESET LED_BUILTIN

Saya memiliki adegan orang membuat segala macam hal menggunakan layar OLED ini. Beberapa bahkan telah membuat video game dan sebagainya. Saya benar-benar tidak tertarik membuat video game menggunakan layar mungil ini. Namun, sekarang saya akan meninggalkan Anda untuk menjelajahi imajinasi Anda dan keluar dengan ide-ide luar biasa.

Langkah 15: Tautan

- Blog:

- Tambahkan Gambar:

- Teks Khusus:

- Pustaka tampilan Adafruit:

- Pustaka Adafruit GFX:

- perpustakaan u8glib: https://code.google.com/archive/p/u8glib/ atau

Jika Anda ingin menggunakan tampilan yang lebih kecil, gunakan 128_32 default jika tidak, untuk tampilan yang lebih besar, beri komentar 128_32 dan batalkan komentar pada 128X64 NO_ACK dalam kode Anda (cukup batalkan komentar pada jenis layar yang Anda gunakan) (font ada di perpustakaan font)

Direkomendasikan: