struct LdrState {
bool isHigh;
const byte ldrPin;
const byte ledPin;
};
struct LdrState ldrs[] { {false,6,10}, {false,7,11}, {false,8,12}, {false,9,13} };
void setup() {
// put your setup code here, to run once:
for (auto &ldr : ldrs) {
pinMode(ldr.ledPin,OUTPUT);
pinMode(ldr.ldrPin,INPUT);
}
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
for (auto &ldr : ldrs) {
// if ( !digitalRead( ldr.ldrPin ) && !ldr.isHigh) { // Reverse logic (!)
if ( digitalRead( ldr.ldrPin ) && !ldr.isHigh) {
digitalWrite( ldr.ledPin, HIGH);
ldr.isHigh = true;
}
else if (ldr.isHigh) {
digitalWrite( ldr.ledPin, LOW);
ldr.isHigh = false;
}
}
}