Tutorial ESP32 – Membuat Running Text LCD 16×2 Menggunakan ESP32

ARSAFAMILY.COM

MEMBUAT RUNNING TEXT LCD 16×2 ESP32 

Bahan yang dibutuhkan adalah ESP32 dan LCD 16×2. Ritual pertama yang harus anda lakukan adalah, menginstall library Liquid Crystal I2C.

Kali ini cara menginstall library pada arduino ide agak berbeda, kita akan mencoba dengan cara manual.

  • Klik link ini untuk mendownload library LiquidCrystal_I2C
  • Ekstrak file .zip yang telah didownload, folder akan bernama LiquidCrystal_I2C-master
  • Ubah nama folder dari LiquidCrystal_I2C-master to LiquidCrystal_I2C
  • Pindahkan folder LiquidCrystal_I2C ke folder library Arduino IDE anda, biasanya ada di document -> arduino
  • Lalu restart Arduino IDE anda

Ritual kedua adalah mengambil address dari I2C. Rangkailah ESP32 dengan LCD 16×2 seperti gambar di bawah ini

Tampilan bagian I2C tampak dari belakang LCD akan seperti berikut

  • VCC I2C -> 3.3V ESP32
  • GND I2C -> GND ESP32
  • SDA I2C -> D21 ESP32
  • SCL I2C -> D22 ESP32

Lalu copy paste code untuk scan address dari I2C di bawah ini, kemudian Upload ke ESP32

#include <Wire.h>
 
void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}
 
void loop() {
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for(address = 1; address < 127; 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.println(address,HEX);
      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);          
}

Hasilnya akan seperti gambar di bawah

Hasil dari address I2C yang digunakan adalah 0x27, address tersebut diingat / dicatat karena akan kita pakai untuk kode untuk running text nya. Copy paste kode di bawah ini

#include <LiquidCrystal_I2C.h>

int kolom = 16;
int baris = 2;

LiquidCrystal_I2C lcd(0x27, kolom, baris);  

String TeksDiam = "Kata2 hari ini :";
String TeksBergerak = "Kalau orang lain bisa kenapa harus saya wkwkwk";

void TulisanBergerak(int row, String message, int delayTime, int kolom) {
  for (int i=0; i < kolom; i++) {
    message = " " + message;  
  }
  message = message + " ";
  for (int pos = 0; pos < message.length(); pos++) {
    lcd.setCursor(0, row);
    lcd.print(message.substring(pos, pos + kolom));
    delay(delayTime);
  }
}
void setup(){
  lcd.init();                      
  lcd.backlight();
}

void loop(){
  lcd.setCursor(0, 0);
  lcd.print(TeksDiam);
  TulisanBergerak(1, TeksBergerak, 300, kolom);
}

Address I2C yang tadi kita dapat 0x27 dimasukkan ke dalam potongan kode berikut

...
LiquidCrystal_I2C lcd(0x27, kolom, baris);
...

Untuk karakter yang akan ditampilkan bisa diubah pada kode ini

...
String TeksDiam = "Kata2 hari ini :";
String TeksBergerak = "Kalau orang lain bisa kenapa harus saya wkwkwk";
...

Sedangkan untuk posisinya text yang akan digerakkan bisa di set pada kode ini

...
TulisanBergerak(1, TeksBergerak, 300, kolom);
...

// Angka 1 menandakan adalah teks yang bergerak akan ditampilkan pada baris bawah
// 300 adalah kecepatan perpindahakan karakter atau kecepatan running text nya
// silahkan dicustom sendiri sesuai kebutuhan

0x27 adalah address yang berguna sebagai penanda untuk ESP32 melakukan komunikasi ke I2C untuk menampilkan karakter / string pada LCD 16×2.

Upload kode di atas ke ESP32, maka hasilnya akan seperti video dibawah ini