So i have this code that whenever i click a button a interrupt starts. In this interrupt i want to do a get request to a webserver.
The thing is seperate the code, the interrupt code works and without an interrupt the http request also works. But when i put this together it doesn't.
Does anybody have an idea why this doesn't work?
// Libraries
#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 Answer 1
Doing something as complex as a HTTP request in an interrupt is a very very silly idea. Instead set a flag in the interrupt routine and examine that in the main loop()
function to perform your HTTP request.
-
Thank you, this worksThomas Van Raemdonck– Thomas Van Raemdonck2020年03月25日 18:33:24 +00:00Commented Mar 25, 2020 at 18:33
-
@ThomasVanRaemdonck if it works (and it should) please accept Majenko's answer as correct; that helps other users see the correct answer and gives Majenko credit.romkey– romkey2020年03月25日 20:15:49 +00:00Commented Mar 25, 2020 at 20:15