『壹』 應用串口控制開關燈,要求通過計算機發送串口指令來實現開關arino上的L燈,使用應用串口控制開
摘要 您好,很高興為您解答程序的編制是int ledPin=13;
『貳』 arino的串口能不能即讀又寫
Arino的串口是由兩個IO口操作,是可以同時作寫及讀的墽作,但在接收方面,受限於機械周期(machine cycle)的影響,波特率(baud rate)的設定太高,如超過115200以上,怕會有失接收(missed reception)的機率。這又視燒錄在Arino的程式是怎樣執行,若有中止函數(interrupt function),而其中執行命令比較多,那失接收的機率訧更大了。
『叄』 Arino怎麼串口顯示字元
先用Serial.begin()打開串口,再用Serial.write()和Serial.writeln()寫字元。
『肆』 arino怎麼從串口讀取字元
首先是串口的讀入:
基本的串口讀入:
void setup()
{
Serial.begin(9600); //設置波特率為9600,一般是這個波特率
}
void loop()
{
if(Serial.available()>0)//如果串口有數據進入的話
{
char c=Serial.read();//每次讀一個字元,是ASCII碼的
}
}
然後就是相當於讀入信息的處理了
比如說如果建一個字元串name,每讀一次c若不是等號或空格就加進去,
當讀到等號時就讀完一個名字了,接下來一直讀到空格的都是數據,
當讀到空格後就完成一個循環,繼續上面的循環這樣
『伍』 arino 讀取串口數值 ~
1、首先設置LED燈引腳,定義變數存儲串口數據,如圖所示。
『陸』 關於Arino 關於串口通信
首先你寫的邏輯有問題
while(Serial.available()>0)比如,這里我輸入了1
{
if (sum<3) sum小於3時存入a
{insum=Serial.read(); a[sum]=insum; sum=sum+1; } //insum讀取出來是1了
if (sum>2) sum大於2時存入b
{insum=Serial.read(); b[3-sum]=insum; sum=sum+1;}//這里又讀了一次?
就是說 Serial.available() 一次只能讀一個出來的,另外的要留到下次判斷
這個雖然回答不了你的問題,但是是一個明顯的錯誤
『柒』 Arino 串口 不能完全接受 命令
你所說的多發幾次就有反應的狀況其實是你運氣好,因為loop是一直循環的,所以裡面的代碼一遍遍一行行往下運行,比如你正好在運行Serial.Read()命令前傳送了,那就可以進行判斷。
所以,要先判斷有沒有數據傳輸過來,再進行判斷。
另外,Serial.Read()使用過後,所有已經被接收的數據就會被清空!
舉例:就拿你的程序來說,如果說你現在的程序加上了判斷有數據的語句,然後你輸了個'g'
那麼,第一個if判斷進行:Serial.Read()此時是g,不等於k。跳過,
但是,此時緩存中的g已經被清除了,也就是說:
第二個if判斷進行:Serial.Read()的值是空,不等於g,也跳過。因此會失效
解決辦法就是新建一個變數保存結果。
##PS:pinMode(pin,mode); mode是INPUT(數字輸入)或OUTPUT(數字、模擬輸出)
程序:
void setup()
{
pinMode(13,OUTPUT); //使13口成為輸出口
Serial.begin(9600);
}
void loop()
{
while(Serial.available()<=0); //這里是一個死循環,如果還有其他任務,就不能用死循環了。這里使用,意思是,如果沒有數據就一直什麼都不幹,如果有數據,就跳出循環(下面就是判斷)
char temp=char(Serial.read()); //保存數據(char(),轉換為字元)
if(temp=='k')
{
digitalWrite(13,HIGH);
}else if(temp=='g')
{
digitalWrite(13,LOW);
}
}
##PS:Serial.available()命令用於判斷串口是否有數據,有就返回可以讀取的位元組的數目,沒有就是0,通常用if(Serial.available()>0)判斷。
官網解釋:Get the number of bytes (characters) available for reading from the serial port. This is data that's already arrived and stored in the serial receive buffer (which holds 64 bytes). available() inherits from the Stream utility class.
『捌』 arino接收串口屏指令
首先根據按鍵對應的口線進行按鍵狀態掃描,加入按鍵消抖程序,確認按鍵後,執行開燈/關燈程序執行。然後執行對應報文的發送即可。