#define LIGHT_STRIP 21
const byte interrupt_pin = 34;
//#define interrupt_pin GPIO_NUM_34
//#define RTC_GPIO4 34
volatile byte state = LOW;
long previousMillis = 0;
long interval = 10000;
unsigned long currentMillis = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(LIGHT_STRIP, OUTPUT);
unlight_led();
attachInterrupt(digitalPinToInterrupt(interrupt_pin), pir_activated, RISING );
//(GPIO_NUM_34, GPIO_INTR_HIGH_LEVEL);
//esp_sleep_enable_gpio_wakeup();
esp_sleep_enable_ext0_wakeup(GPIO_NUM_34, 0);
//esp_light_sleep_start();
delay(1000);
while (currentMillis - previousMillis > interval) {
currentMillis = millis();
if ( state == LOW ) {
light_led();
}
Serial.print("current "); Serial.print(currentMillis);
Serial.print("previous "); Serial.println(previousMillis);
}
unlight_led();
esp_deep_sleep_start();
}
void light_led() {
state = HIGH;
digitalWrite(LIGHT_STRIP, state);
Serial.println("Send High");
}
void unlight_led() {
state = LOW;
digitalWrite(LIGHT_STRIP, state);
Serial.println("Send Low");
esp_light_sleep_start();
//esp_deep_sleep_start();
}
void pir_activated(){
currentMillis = millis();
previousMillis = currentMillis + interval;
Serial.println("interrupt");
}
void loop() {
/*
while (currentMillis - previousMillis > interval) {
currentMillis = millis();
if ( state == LOW ) {
light_led();
}
Serial.print("current "); Serial.print(currentMillis);
Serial.print("previous "); Serial.println(previousMillis);
}
unlight_led();
//if(currentMillis - previousMillis > interval) {
// save the last time you blinked the LED
// currentMillis = millis();
// if ( state == LOW ) {
// light_led();
// }
// Serial.print("current "); Serial.print(currentMillis);
// Serial.print("previous "); Serial.println(previousMillis);
//}
//else {
// if ( state == HIGH ) {
// unlight_led();
// }
//}
delay(1000);
Serial.println("Not Sleeping");
*/
}