int pref [4]={100, 510, 850, 900};
class LDR {
int pines, pin_adc, niveles, *Niv;
public:
LDR(int adc, int n, int* REF) {
pin_adc = adc;
niveles = n;
Niv = new int[n];
Niv = REF;
}
void config(int salidas) {
pines = salidas;
for (int i = 0; i < niveles; i++) {
pinMode(pines + i, OUTPUT);
}
}
float leer_adc() {
delay(100);
return analogRead(pin_adc) * 4.88E-3;
}
void Nivel(float adc) {
for (int i = 0; i < niveles; i++) {
if (adc <= Niv[i] * 4.88E-3) {
digitalWrite(pines + i, LOW);
}
}
}
void Desnivel(float adc) {
for (int i = 0; i < niveles; i++) {
if (adc > Niv[i] * 4.88E-3) {
digitalWrite(pines + i, HIGH);
}
}
}
};
LDR L(A0, 4, pref);
void setup() {
L.config(6);
}
void loop() {
float H = L.leer_adc();
L.Nivel(H);
L.Desnivel(H);
}