#include <Wire.h>
#include <RTClib.h> // Library RTC DS1307
#include <LiquidCrystal_I2C.h> // Library untuk LCD I2C
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
// Konfigurasi pin SDA dan SCL untuk RTC DS1307
const int SDA_PIN = 21;
const int SCL_PIN = 22;
RTC_DS1307 rtc; // Objek RTC DS1307
LiquidCrystal_I2C lcd(0x27, 20, 4); // Objek LCD I2C
DHT dht(DHTPIN, DHTTYPE);
String message = "UPT BLK SURABAYA "; // Pesan yang akan ditampilkan dengan teks berjalan
String message1 = "Masuk Sini Aja ";
String message2 = "Cepat Kuyy ";
int messageLength; // Panjang pesan
int messageLength1;
int messageLength2;
void setup() {
Serial.begin(9600);
dht.begin();
Wire.begin(SDA_PIN, SCL_PIN); // Mulai komunikasi I2C
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
// Mulai RTC DS1307
if (!rtc.begin()) {
Serial.println("Tidak bisa menemukan RTC");
while (1);
}
// Cek apakah RTC berjalan dengan benar
if (!rtc.isrunning()) {
Serial.println("RTC tidak berjalan. Setting waktu...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Setting waktu RTC menggunakan waktu kompilasi
}
messageLength = message.length();
messageLength1 = message1.length();
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if(isnan(humidity) || isnan(temperature)){
Serial.println("Gagal membaca sensor DHT!");
} else{
Serial.print("Suhu:");
Serial.print(temperature);
Serial.print("°C, Kelembaban:");
Serial.print(humidity);
Serial.println("%");
}
DateTime now = rtc.now(); // Baca waktu dari RTC
lcd.clear(); // Bersihkan layar LCD
// Tampilkan tanggal dan waktu pada LCD
lcd.setCursor(0, 0);
lcd.print("Anung Style Bukhori");
lcd.setCursor(0, 1);
lcd.print("UPT BLK SURABAYA");
lcd.setCursor(0, 2);
lcd.print("Masuk Sini Aja");
lcd.setCursor(0, 3);
lcd.print("Cepat Kuyyy");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.println(now.day(), DEC);
// Tampilkan pesan berjalan pada LCD
for (int i = 0; i < messageLength + 16; i++) {
lcd.setCursor(0, 1);
lcd.print(message.substring(i, i + 16)); // Tampilkan potongan pesan sepanjang 16 karakter
delay(200); // Tunggu 300 milidetik sebelum menggeser teks
}
for (int i = 0; i < messageLength1 + 20; i++) {
lcd.setCursor(0, 2);
lcd.print(message1.substring(i, i + 20)); // Tampilkan potongan pesan sepanjang 16 karakter
delay(200); // Tunggu 300 milidetik sebelum menggeser teks
}
for (int i = 0; i < messageLength2 + 20; i++) {
lcd.setCursor(0, 3);
lcd.print(message2.substring(i, i + 20)); // Tampilkan potongan pesan sepanjang 16 karakter
delay(300); // Tunggu 300 milidetik sebelum menggeser teks
}
}
Loading
esp32-devkit-v1
esp32-devkit-v1