You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

178 lines
5.4 KiB

void BeginSleep() {
touchAttachInterrupt(T7, callback7, Threshold);
touchAttachInterrupt(T8, callback8, Threshold);
touchAttachInterrupt(T9, callback9, Threshold);
// SleepTimer = (SleepDuration * 60 - ((CurrentMin % SleepDuration) * 60 + CurrentSec)) + Delta; //Some ESP32 have a RTC that is too fast to maintain accurate time, so add an offset
SleepTimer = SleepDuration * 60;
esp_sleep_enable_timer_wakeup(SleepTimer * 1000000LL); // in Secs, 1000000LL converts to Secs as unit = 1uSec
// Serial.println("Awake for : " + String((millis() - StartTime) / 1000.0, 3) + "-secs");
Serial.println("Entering " + String(SleepTimer) + " (secs) of sleep time");
Serial.println("Starting deep-sleep period...");
esp_sleep_enable_ext1_wakeup(((uint64_t)(((uint64_t)1) << BUTTON_1)), ESP_EXT1_WAKEUP_ALL_LOW);
esp_sleep_enable_touchpad_wakeup();
esp_deep_sleep_start(); // Sleep for e.g. 30 minutes
}
void print_GPIO_wake_up() {
int GPIO_reason = esp_sleep_get_ext1_wakeup_status();
Serial.print("GPIO that triggered the wake up: GPIO ");
// "GPIO-контакт, ставший триггером пробуждения: GPIO"
Serial.println((log(GPIO_reason)) / log(2), 0);
}
void callback7()
{
sen = 7;
delay(1000);
// Serial.begin(115200);
// delay(1000);
//digitalWrite(22, HIGH);
// пустая функция обратного вызова
//Функция callback() будет выполнена, только если ESP32 будет «разбуженной».
//Если ESP32 в режиме сна, и вы коснулись контакта T3, а потом сразу отпустили его,
//то плата «проснется», но функция callback() от этого не запустится.
//Для того, чтобы она запустилась, вам необходимо какое-то время нажимать на контакт.
//В нашем случае функция обратного вызова callback() будет пустой.
// Serial.println("callback T7");
}
void callback8() {
sen = 8;
delay(1000);
}
void callback9() {
sen = 9;
delay(1000);
}
void print_wakeup_reason() {
esp_sleep_wakeup_cause_t wakeup_reason;
wakeup_reason = esp_sleep_get_wakeup_cause();
switch (wakeup_reason)
{
case 5 : Serial.println("Wakeup caused by touchpad");
tik = 1;
break;
// "Пробуждение от сенсорных контактов"
case 1 : Serial.println("Wakeup caused by external signal using RTC_CNTL");
tik = 1;
sen = 0;
break;
// "Пробуждение от внешнего сигнала при помощи RTC_CNTL"
case 3 : Serial.println("Wakeup caused by external signal using RTC_IO");
tik = 1;
sen = 0;
break;
// "Пробуждение от внешнего сигнала при помощи RTC_IO"
case 4 : Serial.println("Wakeup caused by timer");
sen = 0;
break;
// "Пробуждение по таймеру"
case 2 : Serial.println("Wakeup caused by ULP program");
tik = 1;
sen = 0;
break;
// "Пробуждение от ULP-программы"
default : Serial.println("Wakeup was not caused by deep sleep");
tik = 1;
sen = 0;
break;
// "Пробуждение не связано с режимом глубокого сна"
}
}
void print_wakeup_touchpad()
{
touch_pad_t touchPin;
touchPin = esp_sleep_get_touchpad_wakeup_status();
sen = touchPin;
/* switch(touchPin)
{
case 0 : Serial.println("Touch detected on GPIO 4"); break;
// "Обнаружено касание на контакте GPIO4"
case 1 : Serial.println("Touch detected on GPIO 0"); break;
// "Обнаружено касание на контакте GPIO0"
case 2 : Serial.println("Touch detected on GPIO 2"); break;
// "Обнаружено касание на контакте GPIO2"
case 3 : Serial.println("Touch detected on GPIO 15"); break;
// "Обнаружено касание на контакте GPIO15"
case 4 : Serial.println("Touch detected on GPIO 13"); break;
// "Обнаружено касание на контакте GPIO13"
case 5 : Serial.println("Touch detected on GPIO 12"); break;
// "Обнаружено касание на контакте GPIO12"
case 6 : Serial.println("Touch detected on GPIO 14"); break;
// "Обнаружено касание на контакте GPIO14"
case 7 : Serial.println("Touch detected on GPIO 27");
break;
// "Обнаружено касание на контакте GPIO27"
case 8 : Serial.println("Touch detected on GPIO 33");
break;
// "Обнаружено касание на контакте GPIO33"
case 9 : Serial.println("Touch detected on GPIO 32"); break;
// "Обнаружено касание на контакте GPIO32"
default : Serial.println("Wakeup not by touchpad"); break;
// "Пробуждение вызвано не касанием"
}*/
}