/*
CloudElectricPotential voltage;
CloudTemperatureSensor temperatur;
CloudRelativeHumidity humadity;
bool my_led;
*/
#include "thingProperties.h"
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 14
#define DHTTYPE DHT22
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);
const int potPin = 34; // Pin untuk potensiometer
const int pinled = 12; // Pin untuk LED
int potValue = 0;
void setup() {
// Initialize serial and wait for port to open:
Serial.begin(9600);
delay(1500);
// Mengaktifkan sensor DHT22, LCD, dan LED
dht.begin();
pinMode(pinled, OUTPUT);
lcd.init();
lcd.backlight();
// Inisialisasi IoT Cloud
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
// Debugging level
setDebugMessageLevel(4);
ArduinoCloud.printDebugInfo();
}
void loop() {
ArduinoCloud.update();
// Membaca kelembapan dan suhu
onHumadityChange();
// Membaca tegangan dari potensiometer
onVoltageChange();
// Mengatur status LED
onMyLedChange();
// Menampilkan data ke Serial Monitor
Serial.print(F("Kelembapan: "));
Serial.print(humadity); // Variabel ini sudah ada di thingProperties.h
Serial.print(F("% Suhu: "));
Serial.print(temperatur); // Variabel ini sudah ada di thingProperties.h
Serial.print(F("C "));
Serial.print(" Tegangan= ");
Serial.print(voltage); // Variabel ini sudah ada di thingProperties.h
Serial.print("V ");
Serial.print("Potensio (ADC)=");
Serial.print(potValue);
Serial.print(" LED=");
Serial.println(my_led ? "ON" : "OFF"); // Variabel ini sudah ada di thingProperties.h
// Menampilkan data ke LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("H:"); // Kelembapan
lcd.print(humadity);
lcd.print("%");
lcd.setCursor(9, 0);
lcd.print("T:"); // Suhu
lcd.print(temperatur);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("V:"); // Tegangan
lcd.print(voltage);
lcd.print("V");
lcd.setCursor(8, 1);
lcd.print(my_led ? "LED ON" : "LED OFF");
delay(1000); // Update setiap 1 detik
}
void onHumadityChange() {
float t = dht.readTemperature();
float h = dht.readHumidity(); // Fungsi yang benar
if (isnan(h) || isnan(t)) {
Serial.println(F("Gagal membaca data sensor"));
return;
}
temperatur = t; // Variabel dari thingProperties.h
humadity = h; // Variabel dari thingProperties.h
}
void onVoltageChange() {
potValue = analogRead(potPin);
// Konversi ADC ke tegangan untuk ESP32 (3.3V referensi, 12-bit)
voltage = potValue * (3.3 / 4095.0); // Variabel dari thingProperties.h
}
void onMyLedChange() {
// Mengatur status LED
digitalWrite(pinled, my_led ? HIGH : LOW); // Variabel dari thingProperties.h
}