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;

                            // "Пробуждение вызвано не касанием"

    }*/

}
