Med hjälp av ESP-01 och Arduino UNO (2 / 13 steg)
Steg 2: kodning
Nu när vi har installationen komplett, vi kommer att kontrollera LED via Wi-Fi till vända den ON eller OFF.
Vi kommer också att kontrollera att när knappen trycks som ett meddelande tas emot om dess ändring av staten.
Följande kod visar hur du gör detta:
#include
#include
#define TIMEOUT 5000 / / mS
#define LED 5
SoftwareSerial mySerial (7, 6); RX, TX
CONST int knappen = 11;
int button_state = 0;
void setup()
{
pinMode(LED,OUTPUT);
pinMode(button,INPUT);
Serial.BEGIN(9600);
mySerial.begin(9600);
SendCommand ("AT + första", "Redo");
Delay(5000);
SendCommand("AT+CWMODE=1","OK");
SendCommand ("AT + CIFSR", "OK");
SendCommand("AT+CIPMUX=1","OK");
SendCommand("AT+CIPSERVER=1,80","OK");
}
void loop() {
button_state = digitalRead(button);
IF(button_state == High) {
mySerial.println("AT+CIPSEND=0,23");
mySerial.println("
Knappen trycktes!
");
Delay(1000);
SendCommand("AT+CIPCLOSE=0","OK");
}
String IncomingString = "";
booleska StringReady = false;
samtidigt (mySerial.available()) {
IncomingString=mySerial.readString();
StringReady = sant;
}
om (StringReady) {
Serial.println ("fått sträng:" + IncomingString);
om (IncomingString.indexOf("LED=ON")! = -1) {
digitalWrite(LED,HIGH);
}
om (IncomingString.indexOf("LED=OFF")! = -1) {
digitalWrite(LED,LOW);
}
}
}
booleska SendCommand (String cmd, sträng ack) {
mySerial.println(cmd); Skicka "AT +" kommando till modul
om (! echoFind(ack)) / / timeout väntar ack sträng
return true; Ack tomt eller ack hittade
}
booleska echoFind (String sökord) {
byte current_char = 0;
byte keyword_length = keyword.length();
lång leveranstid = millis() + TIMEOUT;
While(Millis() < tidsfristen) {
om (mySerial.available()) {
char ch = mySerial.read();
Serial.write(CH);
om (ch == keyword[current_char])
om (++ current_char == keyword_length) {
Serial.println();
return true;
}
}
}
returnera false; En timeout
}