Http-запрос в прерывании esp8266 не работает
Итак, у меня есть этот код, который всякий раз, когда я нажимаю кнопку, начинается прерывание. В этом прерывании я хочу сделать запрос на получение веб-сервера.
Дело в отдельном коде, код прерывания работает и без прерывания http запрос тоже работает. Но когда я собрал это вместе, это не так.
Кто-нибудь знает, почему это не работает?
// Библиотеки
#include <ESP8266HTTPClient.h>
#include<ESP8266WiFi.h>
char ssid[] = "";
char pass[] = "";
int ledpin = 5; // D1(gpio5)
int button = 4; //D2(gpio4)
int buttonState=0;
ICACHE_RAM_ATTR void ISR() {
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
if (interrupt_time - last_interrupt_time > 200)
{
Serial.println("Drukknop ingedruk");
Serial.println("Sending message to server");
if (WiFi.status()==WL_CONNECTED)
{
HTTPClient http;
String url="<httpurl>";
http.begin(url);
http.addHeader("Content-Type","text/plain");
int httpCode=http.GET();
Serial.println(httpCode);
String payload=http.getString();
Serial.println("While sending I received this from server : "+payload);
http.end();
}
else
{
Serial.println("Internet Problem!");
}
}
last_interrupt_time = interrupt_time;
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid,pass);
while(WiFi.status() !=WL_CONNECTED)
{
delay(500);
Serial.println("Waiting for connection");
}
Serial.println("Connected...");
delay(1000);
if (WiFi.status() ==WL_CONNECTED)
{
Serial.println("Wi-Fi Connected!");
}
delay(5000);
Serial.println("ok");
pinMode(button, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(button), ISR, RISING);
}
void loop() {
}
1 ответ
Лучший ответ:
▲ 1
Выполнять такую сложную задачу, как HTTP-запрос в прерывании, — очень глупая идея. Вместо этого установите флаг в процедуре прерывания и проверьте его в основной функции loop()
для выполнения вашего HTTP-запроса.
,
@Majenko
Смотрите также:
- Метод HTTP PUT на NodeMCU/ESP8266
- Как определить размер Flash?
- В ESP-12E NodeMCU, какой выход PIN A0?
- Преобразование byte* в int в Arduino
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- NodeMCU (Arduino IDE) «DynamicJsonBuffer» не был объявлен в этой области
- NodeMCU поддерживает внедрение ключей?
- Датчик движения PIR (HC-SR501) ложные результаты с NodeMCU
Спасибо, это работает, @Thomas Van Raemdonck
@ThomasVanRaemdonck, если это работает (и должно), пожалуйста, примите ответ Маженко как правильный; это помогает другим пользователям увидеть правильный ответ и отдает должное Майенко., @romkey