Как заставить продолжать выполнение если пропал интернет?

В случае использования Arduino и необходимости продолжать выполнение программы при отсутствии интернета, есть несколько подходов, в зависимости от того, как именно вы планируете использовать интернет в своей программе.

1. Проверка наличия интернета. Самый простой способ - проверить наличие подключения к интернету, используя специальную библиотеку, например, ArduinoHttpClient или WiFi101.

#include <ArduinoHttpClient.h>

// Создаем объект клиента
HttpClient client;

void setup() {
  Serial.begin(9600);
  
  // Проверяем подключение к сети
  while (WiFi.status() != WL_CONNECTED) {
    Serial.println("Отсутствует подключение к сети...");
    delay(1000);
  }

  // Проверяем подключение к серверу через клиент
  while (!client.connect("example.com", 80)) {
    Serial.println("Отсутствует подключение к серверу...");
    delay(1000);
  }
  
  // Считываем данные с сервера
  client.get("/");
  
  // Продолжаем выполнение программы
  Serial.println("Главная программа продолжается...");
}

void loop() {
  // Ваш код
}

Имейте в виду, что данный подход может вызывать задержку в программе, так как она будет ожидать подключение к интернету. Если задержка не является критичной, это может быть достаточным решением.

2. Буферизация данных. Если вы используете интернет для получения данных, вы можете сохранять эти данные в буфер, и затем использовать их, если соединение оборвалось. Для этого можно воспользоваться функциями чтения и записи в EEPROM или SD-карту.

3. Использование локальной базы данных. Если ваша программа работает на Arduino с модулем памяти, вы можете использовать локальную базу данных для сохранения данных, полученных из интернета. Например, вы можете использовать SQLite, чтобы хранить данные внутри Arduino.

4. Повторные попытки подключения. Если интернет пропал, вы можете установить таймер и делать попытки переподключения через определенные интервалы времени. Например, вы можете использовать функцию millis() для проверки времени, прошедшего с момента последней попытки подключения.

#include <ArduinoHttpClient.h>

const int RECONNECT_INTERVAL = 10000; // Интервал в миллисекундах между попытками подключения
unsigned long lastConnectionAttempt = 0;

HttpClient client;

void setup() {
  // Ваш код
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    if (!client.connected()) {
      // Попробуйте переподключиться, если не удалось подключиться
      if (millis() - lastConnectionAttempt > RECONNECT_INTERVAL) {
        if (client.connect("example.com", 80)) {
          // Установите успешное подключение, продолжите выполнение программы
          Serial.println("Подключение установлено");
          lastConnectionAttempt = millis();
        }
      }
    } else {
      // Продолжайте выполнение программы, используя интернет
      // Ваш код
    }
  } else {
    // Ваш код, чтобы обрабатывать отсутствие подключения
  }
}

Обратите внимание, что в данном случае, постоянно продолжается выполнение программы, однако, если отсутствует подключение к интернету, программа просто будет ждать подключения.

Выбор подхода будет зависеть от определенных факторов, таких как требования программы, доступные ресурсы и желаемое поведение при отсутствии интернета.