2.認識Serial.read()

活動一 Serial.print()

1.先將此程式碼(紫色的字)上傳至Arduino中

void setup(){

Serial.begin(9600);

}

void loop(){

if(Serial.available()){

Serial.println(Serial.read());

}

}

或者是

void setup(){

Serial.begin(9600);

}

void loop(){

if(Serial.available()){

int x = Serial.read();

Serial.println(x);

}

}

2.打開序列埠視窗,輸入數字後並按傳送

輸入結果如下表:

結果如下

1.由表中規律可見,每個數字或符號,都會回傳三個代碼,ASC II 碼

2.而且第二個代碼皆為13,第三個代碼皆為10

第一個代碼為傳送的字元代碼,

第二個代碼13代表CR(游標歸位)

第三個代碼10代表NL(下一行)

兩位數 像10 就是依序傳出1(49)與0(48)再加上歸位(13)與下一行(10)。

3.Arduino 序列埠視窗的功能,在每個傳出去的字元代碼之後加上"歸位"與"下一行"

可以藉由調整序列埠視窗如下圖位置的功能來決定是否要加上歸位與下一行

如果設定為:

(1) NL & CR 就會在送出的字元代碼之後加上 13 與 10

(2) 沒有行結尾 ==> 只送出字元代碼

(3) NL ==> 在字元代碼之後加上 10

(4) CR ==> 在字元代碼之後加上13

4. Serial.read(); 函式將每個字元以ASC II字碼傳送,若搭配Serial.print(); 則會將ASC II編碼不加處理直接顯示。

活動二 Serial.write()

1.先將此程式碼(紫色的字)上傳至Arduino中

void setup(){

Serial.begin(9600);

}

void loop(){

if(Serial.available()){

Serial.write(Serial.read());

}

}

或者是

void setup(){

Serial.begin(9600);

}

void loop(){

if(Serial.available()){

int x = Serial.read();

Serial.write(x);

}

}

2.打開序列埠視窗,依序輸入下列字元並傳送:"1","23","a","bc"

(1)若設定為「沒有行結尾」

2.若設定為「NL (newline)」

3.若設定為「CR (carriage return)」

4.若設定為「NL & CR」

由上四種設定可以發現

(1)輸入的字元不會以ASC II 碼顯示,會翻譯ASC II碼成為我們輸入的字元。

(2)每次輸入的資料會一筆一筆出現。

(3)一定要加入NL 或 NL & CR 否則資料將會成為很長一行,否則多筆資料將混淆成一長串, 而無法讀取