Sebelum mulai ke bahasan inti, ijinkan saya curhat dulu mengenai kisah panjang saya dengan LCD.
Dulu saya pernah mendapatkan proyek yang melibatkan beban besar, yaitu pompa air dan mesin besar. Pada waktu itu, rangkaian mikrokontroler yang saya buat masih menggunakan relai biasa, sehingga menimbulkan banyak riak ketika relainya dinyalakan. Cletek.... dan mesin-mesin yang dikontrol oleh relai pun menyala, namun yang membuat saya pusing seratus keliling waktu itu adalah cletekan dari relai itu berdampak buruk pada LCD yang saya gunakan, efeknya LCD menjadi ora mudeng alias error. Errornya muncul karakter-karakter aneh seperti bahasa planet lain, dan LCDnya tidak merespon lagi terhadap update-an display yang dikirim oleh mikrokontroler. Sehingga saya nyatakan tingkat errornya masuk kategori fatal alias perlu diperbaiki segera, mulailah perjalanan panjang saya dan tim untuk troubleshooting masalah ini.
Meskipun saya dan tim sudah memprediksi bahwa masalah error tersebut disebabkan oleh interferensi dari lonjakan koil pada relai dan bebannya, namun setelah melakukan beberapa uji coba solusi umum yang berkaitan dengan interferensi elektrik (EMI), seperti menambahkan snubber, grounding ulang seluruh komponen, ganti power supply, memecah power supply, menambahkan relai AC antara relai DC dan beban, menambahkan shift register, dan sebagainya, dan sebagainya... sudah kita lakukan sampai mabuk berat... itu kalau dihitung-hitung, kita mentok di masalah LCD selama hampir 2 bulan lebih... hahaha... kalau saya ingat itu rasanya pengen nangis kesel overload karena hasil uji cobanya banyak yang PHP, awalnya mau namun dicoba untuk kedua kalinya errornya muncul lagi... kesimpulannya dari semua solusi yang kami lakukan waktu itu hasilnya tetap nihil saudara-saudara...
Setelah kekenyangan dengan berbagai percobaan, kita mulai melakukan posting-posting di berbagai forum untuk mendapatkan bantuan... akhirnya ada yang membalas, seingat saya itu di forum resmi Arduino dan dia menyarankan untuk menggunakan adapter sebelum ke LCD. Tepatnya adapter I2C, jadi sebelumnya saya menyambungkan langsung LCD ke mikrokontroler menggunakan 6 pin, kini dengan adapter ini hanya diperlukan 2 pin saja. Dan voila, tentu hasilnya sudah bisa ditebak, LCD lancar jaya tanpa ada kendala sama sekali meski dipasang pada konfigurasi awal yang sebelumnya super duper bermasalah. Senangnya hati ku waktu itu... hahaha....
Oke, sekian curhatan saya mengenai pengalaman pahit dengan LCD... mungkin saja ada manusia lain dimuka bumi ini yang mengalami hal serupa, dan semoga tulisan ini dapat membantunya.
Sekarang mari langsung ke inti tulisan, yaitu tutorial menggunakan adapter I2C untuk LCD 16x2.
Pengkabelan
Tahap pertama adalah pengkabelan, dan ini sangatlah sederhana karena menggunakan komunikasi I2C. Cukup hubungkan GND VCC ke power supply, atau pin GND ke GND & VCC ke 5V jika menggunakan Arduino. Setelah itu sambungkan dua pin datanya yaitu SDA & SCL masing-masing ke A4 & A5. Done!
Unduh library yang diperlukan
Download dulu library tambahan yang diperlukan, yaitu LiquidCrystal_I2C & One Wire. Link download ada pada bagian bawah tulisan ini yaitu pada bagian lampiran. Setelah mendownload, ekstrak isinya ke C:\Program Files\Arduino\libraries.
Koding pada Arduino
Koding pada Arduino sangat sederhana dan hampir sama dengan koding menggunakan LCD tanpa adapter. Namun, hal yang paling penting yang harus diperhatikan adalah alamat dari adapternya, pada contoh menggunakan alamat 0x3F, sedangkan beberapa vendor ada yang menggunakan 0x27 dan 0x20, jadi kalau tulisan tidak muncul coba ganti alamatnya dan putar-putar potensio pada bagian belakang adapter untuk mengatur kontrasnya. Berikut kodenya:
//===== LCD ======== //LiquidCrystal lcd(18, 13, 22, 21, 20, 19); #include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h> #define I2C_ADDR 0x3F // Jika 0x3F tidak mau coba gunakan 0x27 atau 0x20 #define BACKLIGHT_PIN 3 #define En_pin 2 #define Rw_pin 1 #define Rs_pin 0 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7 LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); void setup() { lcd.begin (16,2); // Nyalakan lampu backlight lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); // Posisikan kursor dan cetak teks contoh lcd.home (); // tulis pada baris pertama lcd.print("Thank you!"); lcd.setCursor ( 0, 1 ); // tulis pada baris kedua lcd.print("It's Working!"); } void loop() { //Tambahkan kode lain disini }
Upload ke Arduino dan josss... sekian curhatan singkat ini, semoga bermanfaat
[[{"fid":"974","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Arduino 2 Pin LCD with I2C Adapter","field_file_image_title_text[und][0][value]":"Arduino 2 Pin LCD with I2C Adapter"},"type":"media","field_deltas":{"1":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Arduino 2 Pin LCD with I2C Adapter","field_file_image_title_text[und][0][value]":"Arduino 2 Pin LCD with I2C Adapter"}},"link_text":null,"attributes":{"alt":"Arduino 2 Pin LCD with I2C Adapter","title":"Arduino 2 Pin LCD with I2C Adapter","height":"267","width":"400","class":"media-element file-wysiwyg","data-delta":"1"}}]]
Komentar Terbaru