Missat samtal anmälaren (3 / 5 steg)
Steg 3: kod
Baserat på kod från
https://github.com/IOT-Playground/Arduino/BLOB/Mas...
och
https://www.Arduino.cc/en/tutorial/BlinkWithoutDel...
/*
* Denna skiss visar hur du ställer in en enkel HTTP-liknande server.
* Servern kommer att ställa en GPIO pin beroende på begäran
http://server_ip/gpio/0 kommer att ställa GPIO2 låga,
http://server_ip/gpio/1 kommer att ställa GPIO2 hög
* server_ip är modulen ESP8266 IP-adress, kommer att
* ut till följetong när modulen är ansluten.
*/
#include < ESP8266WiFi.h >
CONST char * ssid = "din wifi";
CONST char * lösenord = "ditt lösenord";
Skapa en instans av servern
Ange porten för att lyssna på som argument
WiFiServer server(80);
CONST int ledPin = 2; antal LED stift
int val = 0;
Variabler som ändras:
int ledState = låg; ledState används för att ange LED
lång previousMillis = 0; kommer att lagra förra gången LED uppdaterades
variablerna som följer är en lång eftersom tiden, i millisekunder,
kommer snabbt att bli ett större antal än kan lagras i en int.
långa intervall = 250; intervall som blinka (millisekunder)
void setup() {
digitalWrite (ledPin, låg);
Serial.BEGIN(115200);
Delay(10);
förbereda GPIO2
pinMode (ledPin, produktionen);
digitalWrite (2, 0);
Ansluta till WiFi-nätverk
Serial.println();
Serial.println();
Serial.Print ("ansluter till");
Serial.println(SSID);
WiFi.begin (ssid, lösenord);
medan (WiFi.status()! = WL_CONNECTED) {
Delay(500);
Serial.Print(".");
}
Serial.println("");
Serial.println ("WiFi-anslutna");
Starta servern
Server.BEGIN();
Serial.println ("Server började");
Skriva ut IP-adressen
Serial.println(WiFi.localIP());
}
void loop() {
Kontrollera om en klient har anslutit
osignerade långa currentMillis = millis();
om (val == 1) {
om (currentMillis - previousMillis > intervall) {
spara den senaste gången du blinkade lysdioden
previousMillis = currentMillis;
om lysdioden är stänger den på och vice versa:
om (ledState == låg)
ledState = hög;
annat
ledState = låg;
Set LED med ledState av variabeln:
digitalWrite (ledPin, ledState);
}
}
om (val == 0) digitalWrite (ledPin, låg);
WiFiClient klient = server.available();
om (! klient) {
hemkomst.
}
Vänta tills klienten skickar vissa data
Serial.println ("ny kund");
While(!client.available()) {
Delay(1);
}
Läsa den första raden av begäran
Sträng req = client.readStringUntil('\r');
Serial.println(Req);
client.flush();
Matcha begäran
om (req.indexOf("/gpio/0")! = -1)
Val = 0;
annars om (req.indexOf("/gpio/1")! = -1)
Val = 1;
annat {
Serial.println ("felaktigt anrop");
client.stop();
hemkomst.
}
client.flush();
Förbereda svar
Sträng s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\r\n
\r\nGPIO är nu ";
s += (val)?" hög":"låg";
s += "
\n";
Skicka svaret till klienten
client.Print(s);
Delay(1);
Serial.println ("klient disonnected");
Klienten kopplas faktiskt
När funktionen returnerar och "klient" objekt är detroyed
}