Arduino串口不够用怎么办?
Arduino UNO R3到底有幾個串口呢?
如果觀察板子引腳發現,只有一對串口,但是我們燒錄程序時使用的也是通過串口傳輸的,這么說來Arduino應該是有兩個串口的,為了搞明白這個問題,我特意去Arduino官網查了一下關于Arduino的原理圖。
原理圖如下所示,通過原理圖我們知道,單片機只有一對串口,但是最后分兩路出去,一路連在了板子上的排針上;
另外一路通過兩個發光二極管連在了一個叫做atmega的芯片上,程序通過這個芯片給單片機燒錄程序。
原理圖如下所示,通過原理圖我們知道,單片機只有一對串口,但是最后分兩路出去,一路連在了板子上的排針上;
另外一路通過兩個發光二極管連在了一個叫做atmega的芯片上,程序通過這個芯片給單片機燒錄程序。
軟串口
但是我們要使用兩個串口怎么辦呢?不用擔心,Arduino早已為我們謀劃好了一切,我們把上面Arduino板上標注的串口叫做硬串口。
除了硬串口之外,Arduino還為我們設計了一種軟串口,也可以叫做虛擬串口,他是通過程序定義的一組串口,然后映射到Arduino的IO口,這樣我們就可以額外的多出一組串口。
下面我們用軟串口做一組小實驗,經過串口1向Arduino發送數據,Arduino接收到數據之后,再把數據轉送到串口2,并讓其在電腦上打印出來。
程序
上述小實驗的程序如下圖,我們發現這個程序與我們平時所見到的程序所不同的是,第一行多了一句:#include 的語句,我們所使用的軟串口全靠的這一語句。它的作用是將其它數字、模擬引腳通過程序模擬成串口通信引腳。
SoftwareSerial mySerial(8, 9);的意思是把8引腳定義為RX口,TX定義為TX口。
再下面的程序的作用是設定波特率,然后把串口1的數據發給串口2,或者把串口2的數據發給串口1
#include
SoftwareSerial mySerial(8, 9); // RX, TX
void setup()
{
Serial.begin(115200);
mySerial.begin(9600);
}
void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
實驗現象
我們通過電腦的USB串口向Arduino發送“123”,然后再讓Arduino把收到的數據原封不動的發往我們的虛擬串口,并打印在屏幕上。
USB串口發送字符串“123”。
虛擬串口接收到了字符串“123”
Final
有人會說,一個串口就夠用了,何必如此麻煩,然而實際的情況并非如此,比如說我們要用8266WiFi模塊,如果把唯一一個寶貴的串口資源給了8266。
那程序不出問題還好,一旦有錯,如果不再虛擬出來一對串口,我們都不知道哪里出了問題,所以軟串口是我們開發者必須要掌握的。
芯板坊為您提供最全面國內外開發板資訊、評測、試用信息,包括現今的熱門開發板,如樹莓派,Arduino,STM32,OrangePi,Nanop pi,開源硬件等,感興趣的電子發燒友們,可以來免費申請開發板。
總結
以上是生活随笔為你收集整理的Arduino串口不够用怎么办?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 香蒲草根的功效与作用 香蒲草根的药用价值
- 下一篇: 三点共圆公式