arduino串口通信_第1頁
arduino串口通信_第2頁
arduino串口通信_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、inti;intn;Arduino的串行通信剛開始看到引腳讀寫函數(shù)的時候覺得很雞肋,還不如以前端口直接賦值簡單。但是繼續(xù)往下看Arduino提供的通訊函數(shù)就發(fā)現(xiàn)真的是要比以前方便多了.上次把鍵盤做好,現(xiàn)在要把鍵盤按下的信息通過串口發(fā)給PC,如果以前用單片機自己來寫串口程序做,對有基礎(chǔ)的人來說其實也不難.但是如果用Arduino來做,會發(fā)現(xiàn)簡直是傻瓜操作,合適初學(xué)者,也合適有基礎(chǔ)的懶人.先了解一下相關(guān)的一些串口通信函數(shù):Serial.begin(intspeed)初始化串口比特率函數(shù),直接輸入相應(yīng)的數(shù)值就把串口通信的寄存器設(shè)置為對應(yīng)的比特率了,夠傻瓜吧.當(dāng)然,可以使用的值也不是隨便設(shè)的,一般48

2、00960014400等等Serial.available()串口輸入數(shù)據(jù)讀取前的判斷函數(shù),返回值為1串口buff中有數(shù)據(jù)0串口buff中無數(shù)據(jù)或者數(shù)據(jù)已經(jīng)讀取出來過。經(jīng)常if(Serial.available()來詢問監(jiān)視串口。Serial.read()從串口buff中讀取數(shù)據(jù)進來.比如infomaition=Serial.read();則buff中的數(shù)據(jù)會賦值給infomaition變量Serial.print(data)把data從串口把數(shù)據(jù)發(fā)送出去.注意的是使用找個函數(shù)的時候可以有幾種發(fā)送方法:Serial.print(data)這樣的話Arduino會把data發(fā)送成字符串ASCII

3、出去。女廿intdata=79;Serial.print(data)那串口發(fā)送出去的就是string79的ASCII.Serial.print(data,DEC)這樣發(fā)送的是data的10進制字符串。如intdata=79;Serial.print(data,DEC);那串口發(fā)出去的就是string79Serial.print(data,HEX)這樣發(fā)送的是data的16進制字符串。如intdata=79;Serial.print(data,HEX);那串口發(fā)出去的就是string4FSerial.print(data,OCT)這樣發(fā)送的是data的8進制字符串。如intdata=79;Ser

4、ial.print(data,OCT);那串口發(fā)出去的就是string117Serial.print(data,BIN)這樣發(fā)送的是data的二進制字符串。如intdata=79;Serial.print(data,BIN);那串口發(fā)出去的就是string1001111Serial.print(data,BYTE)這樣是把data作為ASCII碼對應(yīng)的字符后發(fā)送。女廿intdata=79;Serial.print(data,BYTE);那串口發(fā)出去的就是stringOSerial.println(data)功能類似上面的發(fā)送函數(shù),也是把數(shù)據(jù)發(fā)送出去,不同的是發(fā)送的數(shù)據(jù)后面帶上換行符號有了上面的

5、這些函數(shù),就可以輕松的和PC進行串口通訊了?,F(xiàn)在做個實驗:先根據(jù)鍵盤按下的按鍵向PC發(fā)送對應(yīng)的鍵值,然后PC接受到鍵值做相應(yīng)的判斷處理后將結(jié)果返回給Arduino執(zhí)行。因為要檢查出按鍵的具體鍵值,上次用來實驗輸入輸出的鍵盤代碼是不能用了。這次鍵盤的原理和上次一樣,先行掃描,然后讀取4條列線,如果有按鍵按下則把掃到的鍵值從串口發(fā)送出去。先定義變量:intKeyOPin=2;intKeyIPin=6;intLedPin=13;intkey=0;intldkey=0;intpress=0;intreg=1;intASCII16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;初始化A

6、rduino:voidsetup()Serial.begin(9600);for(i=0;i4;i+)pinMode(KeyOPin+i),OUTPUT);for(i=0;i4;i+)pinMode(KeyIPin+i),INPUT);pinMode(LedPin,OUTPUT);循環(huán)執(zhí)行掃描、對比和確認(rèn)發(fā)送數(shù)據(jù)voidloop()reg=1;for(i=0;i4;i+)for(n=0;nn)&1)digitalWrite(KeyOPin+n,HIGH);elsedigitalWrite(KeyOPin+n,LOW);for(n=0;n4;n+)if(digitalRead(KeyIPin+n

7、)key=key|(1(4+n);key=key|reg;reg=reg1;if(key&0 xf0)if(key!=oldkey)press=1;oldkey=key;elseoldkey=0;if(press)Serial.print(tabkey/16,BYTE);Serial.print(tabkey%16,BYTE);press=0;key=0;把程序編譯后燒進Arduino,然后把按下Arduino編程軟件的SerialMonitor按鈕,在代碼窗口下面就會顯示出串口監(jiān)視器的串口,在下拉列表中把波特率改為9600即我們設(shè)置的通信波特率。然后按下鍵盤上的按鈕,就能在窗口中看到對應(yīng)的鍵值被發(fā)送過來了。PS:因為不需要是實現(xiàn)檢測長按或者點按,所以平時無按鍵的0 x00不會發(fā)送過來,如果一個按鈕未放開按下新按鈕則會發(fā)送組合鍵值過來,PC做相應(yīng)初判斷處理。把程序編譯后燒進Arduino,然后把按下Arduino編程軟件的SerialMonitor按鈕,在代碼窗口下面就會顯示出串口監(jiān)視器的串口,在下拉列表中把波特率改為9600

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論