#include <LiquidCrystal_I2C.h>
#include "ThingSpeak.h"
#include <WiFi.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
char* ssid = "Wokwi-GUEST"; //enter SSID
char* passphrase = ""; // enter the password
WiFiServer server(80);
WiFiClient client;
unsigned long myChannelNumber = 1;
const char * myWriteAPIKey = "5VGIRLVNYGITF7KC";
int ldrPin = 15;
int inputPin = 2;
int pir = LOW;
int val = 0;
int ledPin = 12;
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
Serial.begin(9600);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, passphrase);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
pinMode(ldrPin, INPUT);
pinMode(inputPin, INPUT);
pinMode(ledPin, OUTPUT);
LCD.init();
LCD.backlight();
LCD.setCursor(1,0);
LCD.print(" TUGAS CAAS ");
LCD.setCursor(2,1);
LCD.print("LAMPU TIDUR");
delay(2000);
LCD.clear();
ThingSpeak.begin(client); // Initialize ThingSpeak
}
void loop() {
val = digitalRead(inputPin);
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 (kecerahan)
if((kecerahan > 50) && (val == LOW)){
digitalWrite(ledPin, LOW);
LCD.setCursor(0,0);
LCD.print(" STATUS LAMPU ");
if(pir == LOW){
LCD.setCursor(0,1);
LCD.print(" Mati ");
pir = HIGH;
digitalWrite(ledPin, LOW);
}
}
else{
digitalWrite(ledPin, HIGH);
LCD.setCursor(0,0);
LCD.print(" STATUS LAMPU ");
if(pir == HIGH){
LCD.setCursor(0,1);
LCD.print(" Nyala ");
pir = LOW;
digitalWrite(ledPin, HIGH);
}
}
//ThingSpeak.setField(1,val);
//ThingSpeak.setField(2,ldrPin);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200){
Serial.println("Data Terkirim");
}
else{
Serial.println("Data Tidak Berhasil Terkirim, ");
}
delay(1000);
}