esp8266-01 and arduino ethernet
Posted: Thu Nov 26, 2015 2:22 pm
i am using App inventor for android application and arduino.
when i press the button from my android application fast sometimes my code stuck and don't work properly.
can anyone help ?
App Inventor Code:
Arduino Code is:
when i press the button from my android application fast sometimes my code stuck and don't work properly.
can anyone help ?
App Inventor Code:
Arduino Code is:
Code: Select all
#include <SoftwareSerial.h>
#define DEBUG false
SoftwareSerial esp8266(11,10); // make RX Arduino line is pin 11, make TX Arduino line is pin 10.
// This means that you need to connect the TX line from the esp to the Arduino's pin 11
// and the RX line from the esp to the Arduino's pin 10
void setup()
{
Serial.begin(9600);
esp8266.begin(115200); // your esp's baud rate might be different
pinMode(8,OUTPUT);
digitalWrite(8,LOW);
pinMode(6,OUTPUT);
digitalWrite(6,LOW);
pinMode(9,OUTPUT);
digitalWrite(9,LOW);
sendData("AT+RST\r\n",2000,DEBUG); // reset module
sendData("AT+CWMODE=2\r\n",1000,DEBUG); // configure as access point AP=2, STA=1, 3=BOTH
sendData("AT+CIFSR\r\n",1000,DEBUG); // get ip address
sendData("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections
sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
}
void loop()
{
if(esp8266.available()) // check if the esp is sending a message
{
int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns
// the ASCII decimal value and 0 (the first decimal number) starts at 48
//**************************************************
String t;
esp8266.find("/?"); // advance cursor to "pin="
while (esp8266.available())
{
t+=(char)esp8266.read();//read byte,convert to char and append it to string
if (t.length()==2){break;}
}
if(t=="on")
{
digitalWrite(8, HIGH);
Serial.write("ON \n");
}
else if(t=="of")
{
digitalWrite(8, LOW);
Serial.write("OFF \n");
}
if(t=="6o")
{
digitalWrite(6, HIGH);
Serial.write("LED is ON \n");
}
else if(t=="6f")
{
digitalWrite(6, LOW);
Serial.write("LED is OFF \n");
}
//***************************************************
// make close command
String closeCommand = "AT+CIPCLOSE=";
closeCommand+=connectionId; // append connection id
closeCommand+="\r\n";
sendData(closeCommand,10,DEBUG); // close connection.
// }
}
}//loop
/*
* Name: sendData
* Description: Function used to send data to ESP8266.
* Params: command - the data/command to send; timeout - the time to wait for a response; debug - print to Serial window?(true = yes, false = no)
* Returns: The response from the esp8266 (if there is a reponse)
*/
String sendData(String command, const int timeout, boolean debug)
{
String response ="";
esp8266.print(command); // send the read character to the esp8266
long int time = millis();
while( (time+timeout) > millis())
{
while(esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
response+=c;
}
}
if(debug)
{
Serial.print(response);
}
return response;
}//end sendData