我想在Arduino Uno R3和Esp8266 Esp-01之间进行通信。 在这种情况下,我想通信或要从esp8266 esp-01向arduino uno发送数据(使用串行软件的字符串)。
问题是,如何在软件串行设置中插入RX和TX引脚,我尝试使用提供的示例代码,但不能。
我的代码如下
对于ESP8266 ESP-01
#include <SoftwareSerial.h>
SoftwareSerial mhaUno(12, 12, false, 256);
void setup() {
Serial.begin(9600);
pinMode(0, OUTPUT);
}
void loop() {
Serial.write("hello from esp");
delay(1000);
String IncomingString = "";
boolean StringReady = false;
while(mhaUno.available()){
IncomingString = mhaUno.readString();
StringReady = true;
}
if(StringReady) {
if(IncomingString == "hello from uno") {
digitalWrite(0, HIGH);
} else {
digitalWrite(0, LOW);
}
}
}
对于ARDUINO UNO R3
#include <SoftwareSerial.h>
SoftwareSerial esp8266(2,3); //RX, TX
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
Serial.write("hello from uno");
delay(1000);
String IncomingString = "";
boolean StringReady = false;
while(esp8266.available()){
IncomingString = esp8266.readString();
StringReady = true;
}
if(StringReady) {
if(IncomingString == "hello from esp") {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}
}
您能帮我解决我的问题吗?
谢谢^ _ ^
答案 0 :(得分:0)
该代码看起来像this Instructable,尽管那里有很多片段。在解决细节之前,需要进行一些更正:
除此之外,我将尝试复制该示例的配置:
mhaUno.write()
和esp8266.write()
,因为大概每个设备的软件定义的引脚都连接到另一个的软件定义的引脚,而不是另一个的默认引脚。当前,自定义TX引脚尚未使用。SoftwareSerial(rxPin, txPin, inverse_logic)
。这个例子也没有。尝试没有它esp8266.write("hello from esp\n")
(或println()
)这样的无害命令将其保留。更好的是,使用Serial可以将SoftwareSerial接收的内容打印到计算机终端,而不必依靠眨眼。