// Nama : Mifta Riri Amela
// Nomor BP : 2311511012
// Kelas : B-Teknik Komputer
// Program untuk menampilkan teks dan informasi counter pada LCD 16x2 I2C
// Mengimpor library Wire untuk komunikasi I2C
#include <Wire.h>
// Mengimpor library LiquidCrystal_I2C untuk mengendalikan LCD melalui I2C
#include <LiquidCrystal_I2C.h>
// Inisialisasi objek LCD dengan alamat I2C 0x27, dengan 16 kolom dan 2 baris
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Variabel untuk menghitung dan menampilkan counter
int counter = 0;
// Variabel untuk menyimpan waktu terakhir yang di update
unsigned long lastUpdateTime = 0;
void setup() {
// Inisialisasi komunikasi serial untuk memonitoring
Serial.begin(9600);
Serial.println("Arduino I2C");
// Inisialisasi komunikasi I2C (Wire library)
Wire.begin();
// Inisialisasi LCD
lcd.init();
// Menyalakan backlight LCD
lcd.backlight();
// Menampilkan pesan pembuka
lcd.setCursor(0, 0); // lakukan set posisi kursor ke kolom 0, dan baris 0
lcd.print("MIFTA RIRI AMELA CNTK"); // Untuk menampilkan teks pada posisi kursor
lcd.setCursor(0, 1); // Set posisi kursor ke kolom 0, baris 1
lcd.print("2311511012"); // Untuk menampilkan teks tambahan pada posisi kursor
// Tunda 2 detik supaya pesan pembuka dapat dibaca
delay(2000);
// Membersihkan layar LCD
lcd.clear();
}
void loop() {
// Mengecek apakah sudah waktunya untuk update layar (setiap 1 detik)
if (millis() - lastUpdateTime >= 1000) {
// Menyimpan waktu update saat ini atau yang sedang berlangsung
lastUpdateTime = millis();
// Menampilkan teks statis yang terdapat pada baris pertama
lcd.setCursor(0, 0);
lcd.print("Counter: ");
lcd.print(counter);
// Menghapus karakter yang tersisa di baris ini
for (int i = 0; i < 16 - 9 - String(counter).length(); i++) {
lcd.print(" ");
}
// Menampilkan teks yang berubah yang terdapat pada baris kedua
lcd.setCursor(0, 1);
// Menampilkan waktu berjalan dalam format detik
lcd.print("Time: ");
lcd.print(millis() / 1000);
lcd.print("s");
// Menghapus karakter yang tersisa pada baris ini
for (int i = 0; i < 16 - 7 - String(millis() / 1000).length() - 1; i++) {
lcd.print(" ");
}
// Increment counter
counter++;
// Menampilkan informasi untuk di serial monitor
Serial.print("Counter: ");
Serial.print(counter - 1);
Serial.print(", Time: ");
Serial.print(millis() / 1000);
Serial.println("s");
}
// Jika counter mencapai angjka 100, maka akan reset kembali ke 0
if (counter >= 100) {
counter = 0;
// Menampilkan pesan reset
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Counter Reset");
lcd.setCursor(0, 1);
lcd.print("Restarting...");
// Tunda sebentar untuk menampilkan pesan reset
delay(2000);
// Bersihkan layar untuk memulai kembali
lcd.clear();
}
}