Photoresistoren und Nachlaufzeit

Hallo zusammen,

ich versuche gerade an meinem Arduino UNO mit Hilfe von 2 Photoresistoren eine LED zum Leuchten zu bringen.
Folgendes Szenario hab ich bis jetzt probiert und auch hinbekommen :

Wenn 1 oder 2 Photoresistoren belegt sind soll die LED leuchten. Sind beide Photoresistoren frei soll die LED aus bleiben. Folgenden Code habe ich getestet und hat auch funktioniert :

int sensorPin0 = A0;  
int sensorPin1 = A1;  
int sensorValue0 = 0; 
int sensorValue1 = 0;  

void setup() {
  pinMode(8, OUTPUT); 
}

void loop() {

  sensorValue0 = analogRead(sensorPin0);
    sensorValue1 = analogRead(sensorPin1); 
  
  if(sensorValue0 + sensorValue1 < 1600) 
  digitalWrite(8,HIGH);
  
  else digitalWrite(8,LOW);
    
  delay(100);                  
}

Als erstes die Frage ob der Code so richtig ist, oder vielleicht anderst gemacht werden sollte.

Als nächstes würde ich gerne einen Zeitbaustein einbringen der die LED, nachdem beide Photoresistoren wieder frei sind, für 3 oder 4 Sekunden nachleuchten lässt. Kann mir jemand nen Tip geben wie ich das am besten einbaue?
Danke und Gruß
Patrick

Das gerade im anderen Thread vorgestellte Beispiel Weekender – Ein Automat ohne delay() hilft dir da weiter

Hi,
danke für die schnelle Antwort, aber so ganz werde ich daraus nicht schlau.
In meinem Fall müsste ich 3 Fälle anlegen
1.LED an (einer oder beide Resis belegt)
2.Nachlaufzeit
3.LED aus (kein Resi belegt)

würde etwa so aussehen :

  case 1:
              if(sensorValue0 + sensorValue1 < 1600)
              { digitalWrite(LEDPin, HIGH); }
              else
              { phase=2; }
              break;
    case 2:
              if(millis()<millisMem+d[0]+d[1])
              { digitalWrite(LEDPin, HIGH); }
              else
              { phase=3; }
              break;
    case 3:
              if(sensorValue0 + sensorValue1 > 1600)
              { digitalWrite(LEDPin, LOW); }
              else
              { phase=1; }
              break;

Aber jetzt würde immer die Zeit erneut ablaufen wenn case1 nicht zutrifft oder ?
Irgendwie steh ich gerade voll auf dem Schlauch.
:confused:

 if(millis()<millisMem+d[0]+d[1])

wenn, dann bitte so:

 if((millis() -  millisMem) > (d[0]+d[1]))

Definiere Dir doch 3 Zustände

0 = Aus
1 = beide bedeckt
2 = Nachlaufzeit

enum zustaende{AUS, BEIDE, NACH};
und dann kannst Du im Beispiel von gregorss Deine Zustände einsetzen und die Zeiten im Array.

Gruß Tommy