#include "SoftwareSerial.h" #define TIMEOUT 5000 // mS #define LED 13 SoftwareSerial mySerial(6, 7); // RX, TX const int button = 8; const int LDR = A0; int LDR_value = 0; void setup() { pinMode(LED,OUTPUT); Serial.begin(9600); mySerial.begin(9600); SendCommand("AT+RST", "Ready"); delay(5000); SendCommand("AT+CWMODE=1","OK"); SendCommand("AT+CIFSR", "OK"); SendCommand("AT+CIPMUX=1","OK"); SendCommand("AT+CIPSERVER=1,80","OK"); } void loop(){ LDR_value = analogRead(LDR); String IncomingString=""; boolean StringReady = false; while (mySerial.available()){ IncomingString=mySerial.readString(); StringReady= true; } if (StringReady){ Serial.println("Received String: " + IncomingString); if (IncomingString.indexOf("LED=ON") != -1) { digitalWrite(LED,HIGH); mySerial.println("AT+CIPSEND=0,18"); delay(100); mySerial.println("

LED Aceso

"); delay(1000); SendCommand("AT+CIPCLOSE=0","OK"); } if (IncomingString.indexOf("LED=OFF") != -1) { digitalWrite(LED,LOW); mySerial.println("AT+CIPSEND=0,20"); delay(100); mySerial.println("

LED Apagado

"); delay(1000); SendCommand("AT+CIPCLOSE=0","OK"); } if(IncomingString.indexOf("LDR") != -1) { char valueStr[4]; sprintf(valueStr,"%04d",LDR_value); Serial.println(valueStr); mySerial.println("AT+CIPSEND=0,4"); delay(100); mySerial.println(valueStr); delay(1000); SendCommand("AT+CIPCLOSE=0","OK"); } } } boolean SendCommand(String cmd, String ack){ mySerial.println(cmd); // Send "AT+" command to module if (!echoFind(ack)) // timed out waiting for ack string return true; // ack blank or ack found } boolean echoFind(String keyword){ byte current_char = 0; byte keyword_length = keyword.length(); long deadline = millis() + TIMEOUT; while(millis() < deadline){ if (mySerial.available()){ char ch = mySerial.read(); Serial.write(ch); if (ch == keyword[current_char]) if (++current_char == keyword_length){ Serial.println(); return true; } } } return false; // Timed out }