class PHOTORESISTOR{
public:
virtual void attach(int pin) = 0;
virtual float lux();
virtual float voltage();
virtual float resistance();
};
class LDR : public PHOTORESISTOR{
private:
int pin;
const float GAMMA = 0.7, RL10 = 50;
float voltage(){
return analogRead(pin) / 1024. * 5;
}
float resistance(){
return 2000 * voltage() / (1 - voltage() / 5);
}
float lux(){
return pow(RL10 * 1e3 * pow(10, GAMMA) / resistance(), (1 / GAMMA));
}
public:
void attach(int pin){
this->pin = pin;
}
float regime(String property){
if(property == "vol"){
return voltage();
}
if(property == "res"){
return resistance();
}
if(property == "lux"){
return lux();
}
}
};
#define PIN A5
LDR photo;
void setup() {
Serial.begin(9600);
photo.attach(PIN);
}
void loop() {
Serial.print(photo.regime("vol"));
Serial.print(" ");
Serial.print(photo.regime("res"));
Serial.print(" ");
Serial.println(photo.regime("lux"));
delay(1000);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
ldr1:VCC
ldr1:GND
ldr1:DO
ldr1:AO