我想在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);
}
}
}
你可以帮我找一个问题吗?
谢谢^ _ ^
该代码看起来像this Instructable,虽然有很多片段。在讨论具体细节之前,先做一些修正:
除此之外,我会尝试复制该示例的配置:
mhaUno.write()
和esp8266.write()
,因为每个设备的软件定义引脚可能连接到另一个软件定义的引脚,而不是其他的默认引脚。目前,自定义TX引脚未使用。SoftwareSerial(rxPin, txPin, inverse_logic)
。这个例子也没有;尝试没有它esp8266.write("hello from esp\n")
(或println()
)这样无害的命令将其打开。更好的是,使用Serial将SoftwareSerial接收的内容打印到计算机终端,而不是依赖于闪烁。