/*
Photoresistor (LDR) Analog Demo
Copyright (C) 2021 Uri Shaked.
https://wokwi.com/arduino/projects/305193627138654786
*/
#include <LiquidCrystal_I2C.h>
#define LDR_PIN 2
// LDR Characteristics
const float GAMMA = 0.7;
const float RL10 = 50;
bool lazer1 = false;
bool lazer2 = false;
int state = 0;
int clients = 0;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
pinMode(LDR_PIN, INPUT);
lcd.init();
lcd.backlight();
}
void loop() {
int analogValue1 = analogRead(A0);
float voltage1 = analogValue1 / 1024. * 5;
float resistance1 = 2000 * voltage1 / (1 - voltage1 / 5);
float lux1 = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance1, (1 / GAMMA));
int analogValue2 = analogRead(A1);
float voltage2 = analogValue2 / 1024. * 5;
float resistance2 = 2000 * voltage2 / (1 - voltage2 / 5);
float lux2 = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance2, (1 / GAMMA));
if (lux1 < 101){
lazer1 = true;
if (!lazer2 && state==0){
state = 1;
}
}
if (lux2 < 101){
lazer2 = true;
if (!lazer1 && state==0){
state = 2;
}
}
if (lazer1 && lazer2 && (lux1 > 100) && (lux2 > 100)){
if (state == 1){
clients++;
}
if (state == 2){
clients--;
}
lazer1 = false;
lazer2 = false;
state = 0;
}
lcd.setCursor(0, 0);
lcd.print("Clients: ");
lcd.print(clients);
delay(100);
}