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