#include <SD.h>
#include <Stepper.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN 8
#define DHTTYPE DHT22
int CS_pin = 10;
DHT dht(DHTPIN, DHTTYPE);
File sd_file;
LiquidCrystal_I2C lcd(0x27, 20, 5);
double hum;
double temp;
const int stepsPerRevolution = 7200;
Stepper myStepper(stepsPerRevolution, 2, 3, 4, 5);
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(CS_pin, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(1,0);
lcd.print("UTS Sistem Terbenam");
lcd.setCursor(1,1);
lcd.print("Suhu dan Kelembapan");
lcd.setCursor(1,2);
lcd.print("Raihana Khalika P");
lcd.setCursor(1,3);
lcd.print("3.34.21.3.20");
delay(3000);
lcd.clear();
if (SD.begin()) {
Serial.println("Initialization done. Card is Ready!");
}
else {
Serial.println("Card initialization failed!");
return;
}
File sd_file = SD.open("data.txt", FILE_WRITE);
if (sd_file) {
sd_file.print("Kelembapan");
sd_file.print(",");
sd_file.print("Suhu_C");
sd_file.print(",");
}
sd_file.close();
}
void loop() {
hum = dht.readHumidity();
temp = dht.readTemperature();
lcd.setCursor(0,0);
lcd.println("Raihana Khalika P");
lcd.setCursor(0,1);
lcd.print("3.34.21.3.20");
lcd.setCursor(0,2);
lcd.print("Suhu :");
lcd.setCursor(13,2);
lcd.print(temp);
lcd.setCursor(19,2);
lcd.print("C");
lcd.setCursor(0,3);
lcd.print("Kelembapan :");
lcd.setCursor(13,3);
lcd.print(hum);
lcd.setCursor(19,3);
lcd.print("%");
if(temp >= 15 && temp <=22, hum > 80){
myStepper.step(stepsPerRevolution);
}
File sd_file = SD.open("data.txt", FILE_WRITE);
if (sd_file) {
senddata();
}
else {
Serial.println("Card initialization failed!");
}
}
void senddata() {
for(long seconds = 00; seconds < 60; seconds=seconds+2) {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
sd_file.println(hum);
sd_file.println(temp);
Serial.print("Kelembapan: ");
Serial.println(hum);
Serial.print("Suhu: ");
Serial.print(temp);
Serial.println("°C");
sd_file.flush();
if(temp > 22, hum > 80){
myStepper.step(stepsPerRevolution);
sd_file.close();
}
}
}