Menulis di LCD 1602 dengan arduino menggunakan i2c



Mari kita beralih ke mikrokontroler sejenak.
Di artikel kali ini mimin akan berbagi ilmu mengenai bagaimana cara menulis di LCD 1602 menggunakan mikrokontroller arduino sobat skema elektro ku, pasti tak asing lagi lcd yang satu ini. yup LCD 1602 ini sering digunakan berbagai projek mikrokontroller yang pernah di pakai oleh berbagai develpor di luar

oke tanpa basa basi lagi, kita akan membahas bagaimana cara menulis cd menggunakan module i2c 


APA SIH I2C ITU ?

Module i2c 1602

Yang dimaksud dengan I2C LCD adalah modul LCD yang dikendalikan secara serial sinkron dengan protokol I2C/IIC (Inter Integrated Circuit) atau TWI (Two Wire Interface). Normalnya, modul LCD dikendalikan secara parallel baik untuk jalur data maupun kontrolnya. Namun, jalur parallel akan memakan banyak pin di sisi kontroller (misal Arduino, Android, komputer, dll). Setidaknya Anda akan membutuhkan 6 atau 7 pin untuk mengendalikan sebuah modul LCD. Dengan demikian untuk sebuah kontroller yang ‘sibuk’ dan harus mengendalikan banyak I/O, menggunakan jalur parallel adalah solusi yang kurang tepat.
Sebagai contoh, sebuah Arduino Uno memiliki pin digital sebanyak 13 buah. Jika Anda gunakan separuhnya untuk mengendalikan LCD berarti Anda hanya punya alternatif sekitar 6 atau 7 pin untuk mengendalikan perangkat yang lain, misalnya motor DC, sensor cahaya, keypad, dan I/O devices lainnya. Nah, sekarang tergantung pada sistem Anda, cukup atau tidak jika harus menggunakan 6/7 pin khusus untuk bekerja dengan LCD saja. Jika tidak cukup, Anda dengan mengubah jalur kendali LCD dari parallel ke serial (I2C) menggunakan modul I2C converter, sehingga Anda hanya akan membutuhkan 2 jalur kabel saja (plus satu kabel ground) untuk menghubungi sang LCD.
Arduino sendiri sudah mendukung protokol I2C/IIC. Di papan Arduino Uno, port I2C terletak pada pin A4 untuk jalur SDA (Serial Data) dan pin A5 untuk jalur SCL (Serial Clock). Jangan lupa untuk menghubungkan jalur kabel Ground antara Arduino dengan perangkat I2C client. Untuk sisi software, Arduino sudah cukup membantu kita bekerja dengan protokol ini melalui library ‘Wire.h’. Berikutnya, library ini akan dimanfaatkan untuk mengkonversi jalur parallel LCD menjadi jalur serial I2C. Anda dapat secara manual melakukannya, tapi jika tidak ingin repot, Anda dapat dengan mudah melakukannya menggunakan library LiquidCrystal_I2C.h. (source : http://saptaji.com)






langsung saja ikuti wiring diagram seperti ini dan pastikan memasang module i2c dengan benar


setelah itu ikuti coding di bawah ini




#include <Wire.h>  // memanggil i2c
#include <LiquidCrystal_I2C.h>  // Memanggil i2C LCD Library

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
 // initialize the LCD
 lcd.begin();

  lcd.print("Hello, world!"); 
  delay (1000);

  lcd.setCursor(0,1);
  lcd.print("Test Backlight  ");
  delay (1000);
   
 for (int i=0; i<5; i++){
 lcd.noBacklight();
  delay(200);
  lcd.backlight();
  delay(200);}

  lcd.setCursor(0,1);
  lcd.print("Test noDisplay");
  delay (1000);
  for (int i=0; i<5; i++){
  lcd.noDisplay();
  delay(200);
  lcd.display();
  delay(200);}

  lcd.setCursor(0,1);
  lcd.print("Test UL Cursor ");
  delay (1000);
  for (int i=0; i<5; i++){
  lcd.cursor();
  delay(500);
  lcd.noCursor();
  delay(500);}

  lcd.setCursor(0,1);
  lcd.print("Test BL Cursor ");
  delay (1000);
  for (int i=0; i<5; i++){
  lcd.blink();
  delay(500);
  lcd.noBlink();
  delay(500);}

  lcd.setCursor(0,1);
  lcd.print("Test Text Scroll");
  delay (1000);
  lcd.setCursor(0,0);
  lcd.print("Hello, world!");
  for (int i=0; i<16; i++){
  lcd.scrollDisplayRight();
  delay(200);}

  for (int i=0; i<16; i++){
  lcd.scrollDisplayLeft();
  delay(200);}

  lcd.setCursor(0,1);
  lcd.print("<- Right to Left");
  delay (1000);
  lcd.clear();
  lcd.rightToLeft();
  lcd.setCursor(15,0);
  lcd.print("Hello, world!");
  delay(3000);
  lcd.clear();
  lcd.setCursor(0,1);
  lcd.print("Left to Right ->");
  delay (1000);
  lcd.leftToRight();
  lcd.setCursor(0,0);
  lcd.print("Hello, world!");

}

void loop()
{
 // jangan di apa apa in ini
}



NOTE JIKA LCD TIDAK TAMPIL TULISAN HANYA KOTAK KOTAK, 
Brati addreess i2c yang sobat pakai berbeda

BAGAIMANA MENGETAHUI ALAMAT I2C YANG SOBAT PAKEK ???



Silahkan copy sketch dibawah ini



#include <Wire.h> // Memanggil i2c
     
     
    void setup()
    {
      Wire.begin();
     
      Serial.begin(9600);
      while (!Serial);             //wait for serial monitor
      Serial.println("\nI2C Scanner");
    }
     
     
    void loop()
    {
      byte error, address;
      int nDevices;
     
      Serial.println("Scanning...");
     
      nDevices = 0;
      for(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);
        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("Unknow 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 kamu copy sketch buka serial monitor yang ada di aplikasi arduino

dan disitu kelihatan alamat I2C yang sobat pake

SELAMAT MENCOBA

No comments:

Post a Comment

Pages