// 1). Punya DHT22
#include <DHT.h>

// 1). punya DHT22
#define DHTPIN  12 // pin data yang terhubung ke DHT22
#define DHTTYPE DHT22 // tipe sensor suhu
DHT dht(DHTPIN, DHTTYPE);

// 2). punya RTC
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtcku;

// 3). Punya lcd i2c 16x2
// #include <LiquidCrystal_I2C.h>
// LiquidCrystal_I2C lcd(0x27,16,2);

// 4). Punya lcd i2c 20x4
#include <LiquidCrystal_I2C.h>
int kolom = 20;
int baris = 4;
LiquidCrystal_I2C lcd1(0x27,kolom,baris);
String nama = "AKHMAD BILLY W";
String jurusan = "TEKNIK IoT";
String blk = "BLK SURABAYA";
String gelombang = "2024";

void setup() {
  // 1). keterangan setup sensor suhu dht22
  Serial.begin(115200);
  Serial.println("Hay.Billy");
  // lcd.begin(16,2);
  // pinMode(12, OUTPUT);
 dht.begin();
 lcd1.begin(20,4);

  // 2). inisialisasi RTC
  if (!rtcku.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }
  if (rtcku.lostPower()) {
    Serial.println("RTC lost power, let's set the time!");
    rtcku.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

 // 3). inisialisasi lcd 16x2
//  lcd.init();
//  lcd.backlight();
//  lcd.setCursor(0,0);
//   lcd.print("AKHMAD BILLY W");
//   lcd.setCursor(0,1);
//   lcd.print("Teknik IoT");

  // 4). inisialisasi lcd 20x4
 lcd1.init();
 lcd1.backlight();
//  lcd1.setCursor(0,0);
//   lcd1.print("AKHMAD BILLY W");
//   lcd1.setCursor(0,1);
//   lcd1.print("Teknik IoT");
//   lcd1.setCursor(0,2);
//   lcd1.print("UPT BLK SURABAYA");
//   lcd1.setCursor(0,3);
//   lcd1.print("2024");
  
 

}

void loop() {

  // 1). keterangan program setting suhu dht22

  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  Serial.println("Temp    : " + String(temperature) + " °C");
  Serial.println("Humidity: " + String(humidity) + " %");
  Serial.println("----------------------------------------");
//   lcd1.setCursor(0,2);
//   lcd1.print(temperature);
//   lcd1.setCursor(0,3);
// lcd1.print(humidity);

  delay(500); // this speeds up the simulation

  //Keterangan untuk RTC
  DateTime now = rtcku.now();

  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.day(), DEC);
  Serial.print(" ");
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();

  TulisanBergerak(0, nama, 50, kolom);
  TulisanBergerak(1, jurusan, 50, kolom);
  TulisanBergerak(2, blk, 50, kolom);
  TulisanBergerak(3, gelombang, 50, kolom);


  delay(1000);


}
void TulisanBergerak(int row, String message,int delayTime, int kolom) {
  for (int i=0; i < kolom; i++) {
  message = " " + message;  //start awal untuk text lewat dari kanan ke kiri
  } 
  message = message + " ";  // end untuk menentukan akhir msg
  for (int pos = 0; pos < message.length(); pos++) {
    lcd1.setCursor(0, row);
    lcd1.print(message.substring(pos, pos + kolom));//menampilkan text yg diperoleh dari substring 
//     delay(delayTime);

//     //penjelasan  substring :
//     // pos awal merupakan index pertama untuk memanggil data text dari msg
//     // dan pos + kolom merupakan index ke dua untuk menentukan berapa panjang text yg di ambil
//     // dan di tampilkan ke lcd

  }
}
Loading
esp32-devkit-v1
GND5VSDASCLSQWRTCDS1307+