#include <LiquidCrystal_I2C.h> //memanggir libabry LiquidCrystal_I2C ke dalam program
#include "thingProperties.h"
int ldrPin = A0; //deklarasi pin ldr dengan nama variabel ldrPin yang dihubungkan ke pin A0
int ledPin = 2; //deklarasi pin led dengan nama ledPin yang dihubungkan ke pin D2
const float GAMMA = 0.7; //nilai ketetapan gama untuk mencari tingkat kecerahan(lux)
const float RL10 = 50; //nilai ketetapan gama untuk mencari tingkat kecerahan(lux)
LiquidCrystal_I2C lcd(0x27, 16, 2); //deklarasi alamat, dan jenis lcd yang digunakan
unsigned long lastMsg = 0;
void setup() {
// put your setup code here, to run once:
pinMode(ledPin, OUTPUT); //inisialisai ledPin sebagai pin output
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Connecting to ");
LCD.setCursor(0, 1);
LCD.print("WiFi ");
// Defined in thingProperties.h
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
/*
The following function allows you to obtain more information
related to the state of network and IoT Cloud connection and errors
the higher number the more granular information you’ll get.
The default is 0 (only errors).
Maximum is 4
*/
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
LCD.clear();
LCD.setCursor(0, 0);
LCD.println("Online");
LCD.setCursor(0, 1);
LCD.println("Updating time...");
lastMsg = millis();
}
void loop() {
// put your main code here, to run repeatedly:
if ((millis() - lastMsg) > 1000) {
ArduinoCloud.update();
// Your code here
ReadSensor();
LCD.clear();
LCD.setCursor(0, 0);
LCD.print("Kecerahan:");
LCD.print(temperature);
LCD.print(" %");
if (ArduinoCloud.connected()) {
LCD.setCursor(0, 2);
LCD.print("connected");
}
else {
LCD.setCursor(0, 2);
LCD.print("not connected");
}
lastMsg = millis();
}
}
void ReadSensor() {
int ldrValue = analogRead(ldrPin); //membaca nilai analog pada pin A0 dari sensor ldr
float voltase = ldrValue / 1024. * 5; //rumus mengubah nilai sinyal analog dari ldr menjadi nilai voltase
float resistansi = 2000 * voltase / (1-voltase / 5); //rumus mencari nilai resistansi dari nilai voltase sebelumnya
float kecerahan = pow(RL10 * 1e3 * pow(10, GAMMA) / resistansi, (1/GAMMA)); //rumus mencari nilai tingkat kecerahan (lux)
temperature = kecerahan;
}