ESP32 прекращает цикл после двух циклов
Мой код: https://pastebin.com/UmdK33U2
Я создал меню, чтобы можно было отправлять команды. Сначала я подключаюсь к Wi-Fi, а затем отправляю команду на отправку запроса.
Затем, когда он обнаружит ключ datos(); выполняется, поэтому цикл обнаруживает это и начинает отправлять запросы. После двух запросов это просто не продолжается.
Что я могу сделать?
Кстати, я использую ESP32.
Спасибо!
boolean datos = false;
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "ssid";
const char* password = "pass";
//удален пароль и ssid для безопасности, он был там раньше.
void setup() {
pinMode(2, OUTPUT);
Serial.begin(115200);
while (!Serial)
;
Serial.println("===================================================");
Serial.println("Welcome to the menu, choose what do you want to do:");
Serial.println("1º Connect to the Wifi | W");
Serial.println("2º Scan Wifi | S");
Serial.println("3º Send data to Website | D");
Serial.println("===================================================");
Serial.println("Made by Francine and Javi.");
Serial.println("===================================================");
}
void scanwifi() {
int n = WiFi.scanNetworks();
Serial.println("===================================================");
Serial.println("Scan have been finished.");
Serial.println("===================================================");
if (n == 0) {
Serial.println("===================================================");
Serial.println("No networks have been found.");
Serial.println("===================================================");
} else {
Serial.print(n); // импортировать серийный номер порта # de redes encontradas
Serial.println(" networks have been found.");
for (int i = 0; i < n; ++i) {
// SSID: имя сети; RSSI: мощность сети в дБм.
Serial.print(i + 1); //запускаем в сети №1...
Serial.print(": ");
Serial.print(WiFi.SSID(i)); //Распечатываем имя сети
Serial.print(" (");
Serial.print(WiFi.RSSI(i)); //Распечатываем мощность сигнала в дБм
Serial.print(")");
byte encryption = WiFi.encryptionType(i); // в переменной шифрования сохраняем тип шифрования сети
Serial.print(" Encryption Type: ");
Serial.println(encryption, HEX); // выводим тип шифрования: 2: WPA, 5: WEP и т. д.
delay(10);
}
}
}
void conectarsealwifi() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
delay(1000);
setup();
}
void loop() {
if (Serial.available()) {
char ch = Serial.read();
if (ch == 'w' || ch == 'W') {
conectarsealwifi();
}
if (ch == 'S' || ch == 's') {
scanwifi();
}
if (ch == 'd' || ch == 'D') {
datos = true;
Serial.println(datos);
}
if (datos == true) { // если вы умеете отправлять данные haz
//случайныйN = случайный(200);
if (WiFi.status() == WL_CONNECTED) {
digitalWrite(2, HIGH);
HTTPClient http;
http.begin("removedtheurl"); //Указываем URL
int httpCode = http.GET(); //Сделаем запрос
if (httpCode > 0) { //Проверяем возвращаемый код
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
Serial.println("===================================================");
} else {
Serial.println(
"Error on HTTP request, reminder maybe its cloudflare shit.");
}
http.end(); //Освобождаем ресурсы
digitalWrite(2, LOW);
}
delay(2000);
} else {
}
}
}
@unknown Javi, 👍0
Обсуждение1 ответ
Лучший ответ:
Вы отправляете из Serial Monitor символ, за которым следует символ новой строки. Эти два символа доступны. Больше нечего вводить в блок if (Serial.available()) {
.
Благодарю за ваш ответ. Как я могу применить это к своему коду?, @unknown Javi
переместив блок if (datos) {
из блока if (Serial.available()) {
?, @Juraj
Спасибо, это работает. Хорошего дня., @unknown Javi
- Функция запуска при срабатывании
- Как запустить разные процедуры с разными интервалами
- Ошибка при попытке динамического моделирования температуры
- Пытаюсь распечатать элементы в структуре на aruino и получаю эту ошибку на compliation
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
Если вы исправите отступы, вы скоро обнаружите свою проблему., @Majenko
@Маженко Привет, спасибо за ответ. Я не понимаю вашего ответа, я не владею иностранным языком, не могли бы вы объяснить лучше решение моей проблемы?, @unknown Javi
Базовая компоновка (отступы) вашей программы — это беспорядок. Если вы исправите это и правильно расположите, вы сможете лучше следить за ходом своей программы, и причина ее поведения станет очевидной., @Majenko
@Majko Что я проверил, так это то, что если я ничего не набираю и отправляю это, циклы продолжаются в течение 1 строки, а затем возвращаются в нормальное состояние., @unknown Javi
Я знаю. Я вижу это, просто взглянув на ход вашей программы (после исправления отступов). Если вы не знаете, как правильно делать отступы, воспользуйтесь функцией автоматического форматирования в IDE, чтобы сделать это за вас., @Majenko
Я, кстати, вижу, что Юрай исправил это для вас в своем посте. Взгляните на эту версию и скажите мне, в чем проблема., @Majenko