在一個標準的烏諾的3V3引腳將不會提供一個ESP8266可靠地工作,足夠的電流。
Uno上的Serial連接到Arduino的引腳0和1,它們用於輸出到計算機上的串行監視器(以及上傳草圖)。您還使用引腳0和1使用軟件串行與ESP8266進行通信。您不能同時使用相同的引腳來實現這些目的。您需要爲軟件序列使用不同的引腳,或者由於您目前沒有對串行進行任何有用的操作,因此您可以切換到使用Uno上的串行與ESP8266進行通信並刪除軟件串行代碼。
如果你打算繼續在Uno上使用軟件串口,那麼你應該使用低於115200的波特率,因爲Arduino SoftwareSerial庫在那個速度下不可靠。
我不知道你怎麼想這個代碼是這樣做的:
char x = "ahmad,54,54,45";
while (ESPserial.available()) {
ESPserial.write(x);
但它絕對行不通的。
行:
char x = "ahmad,54,54,45";
是等價的:
char x = 16;
也許你想用一個字符數組:
char x[] = "ahmad,54,54,45";
但是不會與
兼容
ESPserial.write(x);
所以你要麼需要將其更改爲:
ESPserial.print(x);
,它將打印完整的字符串一次,或者你可以通過數組一個字符時工作:
ESPserial.write(x[i]);
的line:
while (ESPserial.available()) {
檢查是否有來自ESP8266的輸入數據可用,但這永遠不會是真的,因爲您不需要ver通過軟件串行發送來自ESP8266的任何數據。如果它曾經接收過任何數據,那麼它將永久停留在while循環中,因爲你從不讀取接收到的數據。然後,而不是讀的是不存在的輸入數據,你寫ESP8266 16號:
ESPserial.write(x);
我建議你閱讀documentation for the Arduino SoftwareSerial library時間。相同的信息也應該適用於ESP8266上的ESP8266 SoftwareSerial library you're using。
我使用的軟件序列號:https://github.com/plerup/espsoftwareserial – ahmadeb
串行監視器輸出是來自Uno還是ESP8266?你應該編輯你的帖子,在你的草圖中包含在計算器上。 – per1234
來自ESP8266。最近我認爲這個過程會有一個代碼,沒有兩個單獨的代碼。我的主要問題是如何使用ESP8266作爲模塊到arduino UNO?! – ahmadeb