// 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
esp32-devkit-v1