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
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;
|
|
|
|
// "Пробуждение вызвано не касанием"
|
|
|
|
}*/
|
|
|
|
}
|
|
|