At least i found out that the time check doesn't seem to ever start, Serial.println(previousMillis); never happens. I still have got no idea why.
Here's the full version:
int switchPin = 2; // switch is connected to pin 2
int pir = 3; // pir sensor on pin 3
int potPin = A0; // brightness control
int statLed = 10; // mode indicator
int lightOut = 11; // LED strip will go here
int aVal; // variable for reading the pot
int val; // variable for reading the pin status
int val2; // variable for reading the delayed status
int buttonState; // variable to hold the button state
long previousMillis = 0;
long interval = 90000; //wait time for pir mode
int ledState;
int lightMode = 0; // dimmer mode or pir mode
void setup() {
pinMode(switchPin, INPUT_PULLUP);
pinMode(pir, INPUT);
pinMode(statLed, OUTPUT);
pinMode(lightOut, OUTPUT);
Serial.begin(9600);
buttonState = digitalRead(switchPin); // read the initial state
}
void loop(){
val = digitalRead(switchPin); // checking and debouncing
delay(10);
val2 = digitalRead(switchPin);
if (val == val2) {
if (val != buttonState) {
if (val == LOW) {
if (lightMode == 0) {
lightMode = 1; // go to pir mode
}
else {
lightMode = 0; //go to dimmer mode
}
}
}
buttonState = val; // save the new state
}
if (lightMode == 0) { //dimmer
aVal = analogRead(potPin);
analogWrite(lightOut,map(aVal, 0, 1023, 2, 255));
analogWrite(statLed,map(aVal,0,1023,200,2));
}
else{ //pir
digitalWrite(statLed, HIGH);
// here is my problem
if(digitalRead(pir) == HIGH){
digitalWrite(lightOut, HIGH);
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval){
previousMillis = currentMillis;
Serial.println(previousMillis);
digitalWrite(lightOut, LOW);
}
}
else{
digitalWrite(lightOut, LOW);
}
}
}