Hello,
I have a problem with a program that I am using for the Wemos ESP8266 D1 mini. I am using someone's his code which includes a website and a textbox which you can use to enable a pin for ex. Here is the code :
#include <ESP8266WiFi.h>
const char* ssid = "DKBS";
const char* password = "Test1234";
int Pin0 = D0;
int Pin1 = D1;
int Pin2 = D2;
int Pin3 = D3;
int Pin4 = D4;
int ledIntern = LED_BUILTIN;
WiFiServer server(80);
String readString;
void setup() {
Serial.begin(115200);
delay(10);
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
pinMode(ledIntern, OUTPUT);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
digitalWrite(ledIntern, LOW);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.softAP(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
//Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
///////////////
Serial.println(readString); //see what was captured
//now output HTML data header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE>Arduino GET test page</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>HTML form GET example</H1>");
client.println("<FORM ACTION='/' method=get >"); //uses IP/port of web page
client.println("Pin 5 'on5' or 'off5': <INPUT TYPE=TEXT NAME='LED' VALUE='' SIZE='25' MAXLENGTH='50'>
");
client.println("<INPUT TYPE=SUBMIT NAME='submit' VALUE='Change Pin 5!'>");
client.println("</FORM>");
client.println("
");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//stopping client
client.stop();
/////////////////////
if(readString.indexOf("4") >0)//checks for on
{
digitalWrite(Pin4, HIGH); // set pin 5 high
Serial.println("Led On");
}
if(readString.indexOf("x") >0)//checks for off
{
digitalWrite(Pin0, LOW); // set pin 5 low
digitalWrite(Pin1, LOW); // set pin 5 low
digitalWrite(Pin2, LOW); // set pin 5 low
digitalWrite(Pin3, LOW); // set pin 5 low
digitalWrite(Pin4, LOW); // set pin 5 low
Serial.println("Led Off");
}
//clearing string for next read
readString="";
}
}
}
}
}
However, when I replace
if(readString.indexOf("4") >0)//checks for on
to
if(readString.indexOf("four") >0)//checks for on
It works. Typing anything else than "four" or leaving the box empty will not enable D4(Pin4). Else, it will enable output.
However, when I replace "four" with "4" in my program, it doesn't seem to work 100%. When I leave the textbox empty, and press the submit button, it will enable D4. Any other character will enable the assigned pin. Does anyone have any idea how I can solve this? Perhaps I need something like a string to int converter but I am not very experienced.