Med hjälp av ESP-01 och Arduino UNO (7 / 13 steg)
Steg 7: Kod förklaring - fortsatte
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
}
Den senaste funktionen används för att jämföra kvittering strängen till de svar som gavs av den ESP-01 när ett kommando har skickats.
Först initiera vi variabeln "current_char" till noll. Denna variabel kommer att fungera som ett index att jämföra varje tecken mellan kvittering strängen och ESP svaret. Sedan vi lagra längden på strängen kvittering i variabeln "keyword_length" och skapa en tidsfrist som är lika med tiden sedan Arduino styrelsen började köra plus 5000ms.
Därefter skapar vi ett tag loop som kör tills tidsfristen uppfylls. Inuti while loopen vi kontrollera om det finns data som ska läsas i seriekanal ansluten till ESP. Om fallet är sant, då jämför vi kvittering strängen till de data som läses från seriekanal.
Om båda är lika, returnerar funktionen en sann för att berätta det program som den ESP-01 har svarat därför till kommandot skickas. Om tidsfristen är uppfyllt, returnerar funktionen ett falskt, vilket innebär att något gick fel och ESP har inte kunnat svara på kommandot skickas.