Memprogram LCD 16x2 menggunakan Arduino

Memprogram LCD 16x2 menggunakan Arduino

"Tutorial ini saya peruntukkan untuk semua kalangan, entah anak SMP, entah insinyur sipil, entah ibu rumah tangga. Sehingga ada analogi-analogi yang saya buat dengan bahasa 'slank' (jawanya: agak slengekan, hehe) untuk memudahkan pemahaman. Apabila Anda sudah mahir dengan mikrokontroler dan kurang berkenan dengan pemilihan kata-kata yang saya gunakan, mohon dimaklumi."

     Selamat datang kembali di blog saya. Pada tutorial ke-3 ini saya akan membahas tentang pemrograman LCD 16x2. Emmmm, sebenarnya, pada pembelajaran mikro secara umum, yang dibahas pertama kali adalah tentang I/O (input/output). Namun, di sini saya tidak mengikuti 'kaidah' umum, dengan membahas tentang pemrograman LCD 16x2 terlebih dahulu. Kenapa? Karena menurut saya, sesuai dengan namanya: I/O, ada 2 komponen, yaitu Input dan Output. Input sendiri nantinya terdapat perbedaan saat menggunakan pull-up internal dan pull-up eksternal. Nah, disinilah umumnya terdapat kesulitan jika dijelaskan dalam 1 sesi. Sedangkan pemrograman LCD itu sangat mudah. Cukup koneksikan board LCD dengan board Arduino secara benar, diprogram, tringggg, teks bisa ditampilkan!!! :D 
       
       Baiklah, untuk tutorial ini yang anda butuhkan sama seperti pada tutorial 2, yaitu Board Arduino Uno+Kabel USB Printer+Laptop dannnn..... board LCD 16x2 + kabel jumper. Ada 2 pilihan untuk board LCD 16x2, anda membuat dengan menggunakan project board seperti di bawah ini:
sumber: http://arduino-for-beginners.blogspot.com
     atau menggunakan board LCD 16x2 buatan saya (yang dapat di beli di  http://assembly-pro.com. hahahaha) :
Hanya 85ribu rupiah!!!
       "Board ini compatible dengan Arduino kah?", nah, ada 1 nasehat yang perlu saudara-saudara sekalian ingat :D 
"Semua sensor/display yang dapat dibaca oleh mikrokontroler pada umumnya, maka SEMUANYA KOMPATIBEL DENGAN ARDUINO" 
      Memang, seiring dengan munculnya Arduino, muncul board-board sensor yang tertulis "Arduino Compatible". Arti dari kalimat "Arduino Compatible" bukan sensor-sensor tersebut hanya dapat di baca dengan modul arduino, tapi lebih kepada source code untuk pembacaaan sensor-sensor tadi sudah tersedia dalam bahasa pemrograman Arduino :D ... jadi tentu saja, karena board LCD saya ini bersifat universal (bahkan dapat digunakan baik oleh programmer Code Vision maupun Bascom AVR) maka tentu saja board LCD saya kompatibel dengan Arduino. Hanya saja bukan shield Arduino. "Maksudnya?", maksudnya, untuk dapat diprogram dengan board Arduino, butuh dihubungkan dengan kabel. Sedangkan Arduino Shield, cukup ditancapkan pada board Arduino karena bentuk dan ukuran port-nya Arduino Shield sudah sama denga Arduino board (semoga Anda tidak bingung. Aamiin). 
     Baiklah, mari kita mulai untuk memprogram LCD menggunakan Arduino UnoUntuk mempermudah pengkabelan, saya menggunakan header tekuk pada port Arduino. Port pada board Arduino yang digunakan adalah: 
- 5V
- Gnd
- Pin2 s/d Pin7
    Jika Anda menggunakan AP-LCD P.Button board, anda cukup menghubungkan dengan kabel antara:
 * LCD pin RS        ke    UNO digital pin 7
 * LCD pin Enable  ke    UNO digital pin 6
 * LCD pin D4        ke    UNO digital pin 5
 * LCD pin D5        ke    UNO digital pin 4
 * LCD pin D6        ke    UNO digital pin 3
 * LCD pin D7        ke    UNO digital pin 2
 * LCD pin R/W     ke    UNO  ground
 * LCD pin VCC    ke    UNO 5V
 * LCD pin GND    ke    UNO  GND
     Hasilnya sebagai berikut:
  
    Namun, jika Anda hendak menggunakan project board, anda bisa membuat rangkaian seperti berikut di project board Anda:
      Bingung? Intinya, yang dibutuhkan untuk memprogram LCD adalah Pin RS, E, D4, D5, D6, D7. Pin inilah yang terhubung dengan pin Arduino Uno. Jika menggunakan pemrograman CodeVision AVR, pin R/W juga dihubungkan dengan pin mikrokontroler. Sedangkan untuk pemrograman Arduino, pin R/W dihubungkan ke Ground. Pin3 (Contrast) digunakan untuk mengatur gelap terang tampilan teks di LCD. Sebenarnya Pin3 dapat langsung di hubungkan ke Ground. Tetapi, pada beberapa tipe LCD, dibutuhkan pengaturan level tegangan menggunakan Varible Resistor untuk mendapatkan settingan contrast terbaik. Untuk Pin15 dan Pin16 digunakan untuk menyalakan LED backlight, LED yang membuat LCD terlihat menyala (gampangannya seperti itu). Tambahkan resistor dengan nilai antara 330 - 560ohm (lihat gambar skematik) untuk membatasi arus yang mengalir pada LED backlight. 
    Setelah semua pin yang dibutuhkan sudah terkoneksi, buka aplikasi Arduino IDE anda, lalu buat jendela baru dengan menekan tombol Ctrl+N. Setiap anda membuat program baru, maka akan ada teks:
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly: 
  
}
     Hapus semua teks tersebut sehingga tampilan pada Arduino IDE anda benar-benar bersih:
    Lalu copikan code dibawah ini di Arduino IDE Anda:

Copy dari sini...:
/*

 Tutorial 2: Pemrograman LCD 16*2
 -Board menggunakan AP LCD-Push Button, yang dapat dibeli di assembly-pro.com-

 Koneksi Board LCD - Arduino:
 * LCD RS pin to digital pin 7
 * LCD Enable pin to digital pin 6
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * VCC to 5V
 * GND to GND

 Dibuat oleh 
 Syamsiar Kautsar, S.ST.

 *boleh diedit dan disalin untuk keperluan pendidikan

 */

// ini adalah code yang harus ditambahkan untuk mengimport Library LCD 16*2
// jadi, jika menggunakan LCD, selalu ingat untuk menambahkan code: #include <LiquidCrystal.h>
// "Bagaimana jika lupa tidak menambahkannya?" ya silahkan dicoba sendiri :D Hehehehe..
#include <LiquidCrystal.h>

// ini adalah inisialisasi pin LCD yang terhubung dengan pin Ardunio, 
// code di bawah ini mempunyai arti: pin LCD RS, E, D4, D5, D6, D7 secara berurutan terhubung ke pin Arduino 7, 6, 5, 4 , 3, 2
// "Apakah bisa diganti-ganti?" Tentu saja bisa, no.pin tinggal menyesuaikan rangkaian Anda :D  
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

void setup() {
  // code di bawah ini mempunyai arti kita menggunakan LCD karakter ukuran 16*2, kenapa?
  // karena di pasaran ada LCD yang berukuran 16*4, 20*4 ataupun LCD grafik
  lcd.begin(16, 2);
  // code "lcd.print" digunakan untuk menampilkan teks "..." pada LCD, 
  // ingat, gunakan tanda petik diantara teks yang hendak ditampilkan
  lcd.print("Belajar Arduino :D");
  
  // delay = waktu tunggu, ga perlu dijelaskan kan fungsinya untuk apa? :D
  // namun, yang perlu diingat, nilai yang kita masukkan dalam (xxx) adalah dalam satuan mili second
  // artinya, jika kita ingin delay selama 1 detik, maka kita isi dengan nilai 1000. Ok? 
  delay(2000);
}

// mari kita masuk ke program utama
// void loop digunakan agar program selalu dikerjakan berulang-ulang
// urutan pengerjaan program adalah dari atas ke bawah, ingat: dari atas ke bawah. Dan selalu begitu..

void loop() {
  //---------------------------------------------------------------------------------------------------------
  // code ini untuk menghapus isi memori pada LCD, ini sama halnya saat anda menghapus tulisan di papan tulis
  lcd.clear();
  
  // code "lcd.setCursor" (ingat bukan "lcd.setcursor", software arduino bersifat case sensitif, artinya... 
  // "aku" tidak sama dengan "Aku") digunakan untuk memposisikan cursor pada lokasi (kolom,baris)
  // lokasi dimulai dari angka 0, artinya jika menggunakan LCD 16*2, maka ada baris 0 dan 1 serta kolom 0-15 
  lcd.setCursor(0,0);
  lcd.print("teks di LCDnya");
  lcd.setCursor(0,1);
  lcd.print("nyala/mati kan?");
  
  //----------------------------------------------------------------------------------------------------------
  // "lcd.noDisplay" digunakan untuk menghilangkan tampilan teks pada LCD, ini berbeda dengan "lcd.clear"
  // "lcd.noDisplay" hanya menghilangkan tampilan teks, tapi tidak menghapus isi memori LCD
  // ini sama halnya Anda menulis di papan tulis, lalu menutupnya dengan tirai agar tulisannya tidak terlihat
  // ketika tirainya dibuka, maka tulisannya akan tampak lagi ^^
  lcd.noDisplay();
  delay(500);
   // Turn on the display:
   
   // "lcd.diplay" digunakan untuk menampilkan kembali isi teks yang ada pada memori LCD, mudah bukan?
  lcd.display();
  delay(500);

  // kita ulang 2x lagi :D
  lcd.noDisplay();
  delay(500);  
  lcd.display();
  delay(500);
  lcd.noDisplay();
  delay(500);  
  lcd.display();
  delay(500);
  
  //---------------------------------------------------------------------------------------------------------
  lcd.clear();
  
  lcd.setCursor(0,0);
  lcd.print("saat ini,");
  lcd.setCursor(0,1);
  lcd.print("cursor nyala");
  
  // lcd.cursor digunakan untuk menampilkan cursor pada LCD
  // ingat ketika mengetik menggunakan MS. Word? akan ada cursor yang kelap-kelip sebagai penanda,
  // nah, seperti itulah code ini bekerja,  
  lcd.cursor();
  delay(3000);
  
  lcd.setCursor(0,0);
  lcd.print("saat ini,");
  lcd.setCursor(0,1);
  lcd.print("cursor mati ");
  
  // "lcd.noCursor" digunakan untuk menghilangkan tampilan cursor pada LCD
  // apabila kita tidak memerlukan tampilan cursor pada LCD kita, 
  // kita bisa gunakan code ini
  lcd.noCursor();
  delay(3000);
  
  //---------------------------------------------------------------------------------------------------------
  lcd.clear();
  
  lcd.setCursor(0,0);
  lcd.print("saat ini,");
  lcd.setCursor(0,1);
  lcd.print("blinking aktif");
  
  // lcd.blink digunakan untuk menampilkan posisi pada LCD dalam format blok yang berkedip-kedip
  // code ini sebenarnya hampir sama dengan fungsi code lcd.cursor,
  // hanya berbeda pada bentuk tampilan di LCD,  
  lcd.blink();
  delay(3000);
  
  lcd.setCursor(0,0);
  lcd.print("saat ini,");
  lcd.setCursor(0,1);
  lcd.print("blingking mati");
  
  // "lcd.noBlink" digunakan untuk menghilangkan tampilan blinking pada LCD
  // apabila kita tidak memerlukan tampilan blink sebaga penanda posisi cursor pada LCD kita, 
  // kita bisa gunakan code ini
  lcd.noBlink();
  delay(3000);
  
  //-------------------------------------------------------------------------------
  lcd.clear();
  
  lcd.setCursor(0,0);
  lcd.print("0123456789ABCDEF");
  lcd.setCursor(2,1);
  lcd.print("geser kanan");
  delay(1000);
  
  lcd.scrollDisplayRight();
  delay(500);
  lcd.scrollDisplayRight();
  delay(500);
  lcd.scrollDisplayRight();
  delay(500);
  //lcd.scrollDisplayRight();
  //delay(500);
  
  lcd.setCursor(2,1);
  lcd.print("geser kiri ");
  delay(500);
  lcd.scrollDisplayLeft();
  delay(500);
  lcd.scrollDisplayLeft();
  delay(500);
  lcd.scrollDisplayLeft();
  delay(500);
}
... sampai sini.

    Silahkan disimpan dengan nama sesuka Anda. Selanjutnya, tinggal mendownload ke Arduino anda, dan taraaaaaa!!! :D (bagi yang belum bisa mendownload program, silahkan dibaca Tutorial 2
   
     Code di atas sudah saya lengkapi dengan penjelasan program. Silahkan amati antara program dengan hasil tempilannya pada LCD. Saat ini saya sedang menyiapkan tutorialnya dalam bentuk video untuk memudahkan pemahaman, InsyaAllah. Baik, sekian, semoga banyak membantu :D Aamiin. 
Memprogram LCD 16x2 menggunakan Arduino Memprogram LCD 16x2 menggunakan Arduino Reviewed by Riki on 11:06:00 AM Rating: 5

No comments:

Facebook

Riki Candra. Powered by Blogger.