Menampilkan dan Menggeser Teks pada LCD I2C 16×2


JOBSHEET PRAKTIK IoT

Menampilkan dan Menggeser Teks pada LCD I2C 16×2

A. Identitas Praktik

KomponenKeterangan
Mata PelajaranInformatika / IoT
KompetensiMikrokontroler Arduino
MateriLCD I2C 16×2
KelasXII TKJ
Alokasi Waktu4 JP
MetodePraktik dan eksperimen
SoftwareArduino IDE
SimulatorTinkercad / Arduino nyata

B. Tujuan Pembelajaran

Setelah melakukan praktik, siswa diharapkan mampu:

  1. Menjelaskan fungsi LCD I2C 16×2.

  2. Menjelaskan fungsi komunikasi I2C.

  3. Menghubungkan LCD I2C dengan Arduino Uno.

  4. Menggunakan library LiquidCrystal_I2C.

  5. Menampilkan teks pada LCD.

  6. Mengatur posisi teks menggunakan setCursor().

  7. Membuat teks bergerak ke kanan dan kiri.

  8. Memahami penggunaan for dan delay() pada program Arduino.

  9. Melakukan modifikasi program dan menguji hasilnya.

C. Alat dan Bahan

  • Arduino Uno

  • LCD 16×2 I2C

  • Kabel jumper

  • Breadboard

  • Kabel USB

  • Komputer/laptop

  • Arduino IDE

Jika menggunakan simulator, komponen dapat disesuaikan dengan komponen yang tersedia.

D. Dasar Teori

LCD 16×2 adalah perangkat output yang dapat menampilkan karakter. Angka 16×2 berarti LCD mempunyai 16 kolom dan 2 baris.

Modul I2C memungkinkan Arduino berkomunikasi dengan LCD menggunakan lebih sedikit kabel.

Pada Arduino Uno umumnya:

LCD I2CArduino Uno
VCC5V
GNDGND
SDAA4
SCLA5

Catatan: alamat I2C yang sering digunakan adalah 0x27, tetapi pada beberapa modul dapat berbeda.

E. Rangkaian Praktik

Hubungkan:

LCD I2C → Arduino Uno

LCD I2C          Arduino Uno
----------------------------
VCC       →      5V
GND       →      GND
SDA       →      A4
SCL       →      A5

F. Langkah Kerja

Praktik 1 — Menampilkan Teks

  1. Hubungkan LCD I2C dengan Arduino.

  2. Buka Arduino IDE.

  3. Pastikan library LiquidCrystal_I2C tersedia.

  4. Masukkan program berikut.

  5. Pilih board Arduino Uno.

  6. Pilih port Arduino.

  7. Upload program.

  8. Amati tampilan LCD.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
  lcd.init();
  lcd.backlight();
}

void loop()
{
  lcd.setCursor(0, 0);
  lcd.print("Selamat Belajar");

  lcd.setCursor(0, 1);
  lcd.print("IoT Bersama Juni");
}

Pertanyaan:

  1. Apa fungsi lcd.init()?

  2. Apa fungsi lcd.backlight()?

  3. Apa arti angka 16,2 pada program?

  4. Apa fungsi lcd.setCursor(0,0)?

  5. Mengapa teks pada baris kedua tidak boleh terlalu panjang?


Praktik 2 — Membuat Teks Berjalan

Ubah program menjadi:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
  lcd.init();
  lcd.backlight();
}

void loop()
{
  lcd.setCursor(0, 0);
  lcd.print("Selamat Belajar");

  lcd.setCursor(0, 1);
  lcd.print("IoT Bersama Juni");

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

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

G. Eksperimen

Lakukan perubahan berikut dan amati hasilnya.

PercobaanPerubahanHasil Pengamatan
1delay(200)delay(500)
2delay(200)delay(100)
3i < 20i < 10
4i < 20i < 40
5Ganti tulisan baris 1
6Ganti tulisan baris 2

H. Tantangan Praktik

Buat program LCD dengan ketentuan:

Baris 1:

SELAMAT DATANG

Baris 2:

SISWA TKJ

Kemudian buat tulisan bergerak:

kanan → kiri → kanan

Tambahkan jeda sehingga pergerakan tulisan terlihat nyaman.

I. Tugas Analisis

Jawablah pertanyaan berikut:

  1. Apa fungsi library Wire.h?

  2. Apa fungsi library LiquidCrystal_I2C.h?

  3. Apa fungsi alamat 0x27?

  4. Apa fungsi lcd.print()?

  5. Apa fungsi lcd.setCursor()?

  6. Apa perbedaan scrollDisplayRight() dan scrollDisplayLeft()?

  7. Apa fungsi for pada program?

  8. Apa pengaruh perubahan nilai delay(200)?

  9. Apa yang terjadi jika nilai perulangan 42 diperbesar?

  10. Mengapa program diletakkan di dalam loop()?

J. Kesimpulan

Tuliskan kesimpulan berdasarkan praktik yang telah dilakukan.

Kesimpulan siswa:

....................................................................................

....................................................................................

....................................................................................

K. Penilaian

Aspek PenilaianBobot
Persiapan alat dan rangkaian15%
Ketepatan koneksi LCD20%
Ketepatan program25%
Keberhasilan praktik20%
Eksperimen/modifikasi10%
Laporan dan kesimpulan10%
Total100%

L. Produk Akhir

Setiap siswa harus menghasilkan:

1. Rangkaian Arduino Uno + LCD I2C 16×2
2. Program LCD menampilkan teks
3. Efek teks berjalan kanan dan kiri
4. Minimal 3 modifikasi program
5. Laporan hasil praktik

Level pengembangan: siswa yang selesai lebih cepat dapat ditantang membuat LCD menampilkan nama siswa, kelas, dan pesan berjalan secara bergantian.


TAMBAHAN 

#include <Wire.h>

#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27, 16, 2);


// Variabel waktu

unsigned long waktuSebelumnya = 0;


int jam = 7;

int menit = 0;

int detik = 0;


// Variabel scrolling

int posisi = 0;

int arah = 1;


void setup()

{

  lcd.init();

  lcd.backlight();


  lcd.clear();

}


void loop()

{

  // =========================

  // MENGHITUNG WAKTU

  // =========================

  

  unsigned long waktuSekarang = millis();


  if (waktuSekarang - waktuSebelumnya >= 1000)

  {

    waktuSebelumnya = waktuSekarang;


    detik++;


    if (detik >= 60)

    {

      detik = 0;

      menit++;

    }


    if (menit >= 60)

    {

      menit = 0;

      jam++;

    }


    if (jam >= 24)

    {

      jam = 0;

    }

  }


  // =========================

  // MENAMPILKAN JAM

  // =========================


  lcd.setCursor(0, 0);


  if (jam < 10)

    lcd.print("0");


  lcd.print(jam);

  lcd.print(":");


  if (menit < 10)

    lcd.print("0");


  lcd.print(menit);

  lcd.print(":");


  if (detik < 10)

    lcd.print("0");


  lcd.print(detik);


  lcd.print("       ");



  // =========================

  // MENAMPILKAN TEKS

  // =========================


  lcd.setCursor(0, 1);

  lcd.print("Selamat Belajar ");


  // =========================

  // SCROLL TEKS

  // =========================


  if (waktuSekarang % 200 < 20)

  {

    if (arah == 1)

    {

      lcd.scrollDisplayRight();

      posisi++;


      if (posisi >= 42)

      {

        arah = -1;

      }

    }

    else

    {

      lcd.scrollDisplayLeft();

      posisi--;


      if (posisi <= 0)

      {

        arah = 1;

      }

    }

  }

}


PENDETEKSI SUHU

#include <Wire.h>

#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27, 16, 2);


const int pinTMP36 = A0;


void setup()

{

  lcd.init();

  lcd.backlight();


  lcd.setCursor(0, 0);

  lcd.print("Sensor Suhu");

  lcd.setCursor(0, 1);

  lcd.print("TMP36");

  

  delay(2000);

  lcd.clear();


  Serial.begin(9600);

}


void loop()

{

  // Membaca sensor TMP36

  int nilaiADC = analogRead(pinTMP36);


  // Mengubah ADC menjadi tegangan

  float tegangan = nilaiADC * (5.0 / 1023.0);


  // Mengubah tegangan menjadi suhu Celsius

  float suhu = (tegangan - 0.5) * 100.0;


  // Menampilkan pada LCD

  lcd.setCursor(0, 0);

  lcd.print("Suhu:");


  lcd.setCursor(5, 0);

  lcd.print(suhu, 1);

  lcd.print((char)223);

  lcd.print("C   ");


  lcd.setCursor(0, 1);

  lcd.print("ADC:");

  lcd.print(nilaiADC);

  lcd.print("       ");


  // Serial Monitor

  Serial.print("ADC = ");

  Serial.print(nilaiADC);


  Serial.print(" | Tegangan = ");

  Serial.print(tegangan, 2);

  Serial.print(" V");


  Serial.print(" | Suhu = ");

  Serial.print(suhu, 1);

  Serial.println(" C");


  delay(1000);

}

Tidak ada komentar:

Posting Komentar

WAWANCARA VALIDASI IDE BISNIS

TUGAS PROJECT KIK XII TKJ PROJECT #02 — WAWANCARA VALIDASI IDE BISNIS Tema: Apakah Ide Bisnis Saya Benar-Benar Dibutuhkan? Nama: ............