Arduino (電腦)
與
Serial monitor(人機介面---電腦與人的翻譯者) 


ASII Code Table(PDF) (含extended)
Converter

在文字處理中, CR, LF, CR/LF是不同作業系統上使用的換行符.
Windows採用回車 換行CR/LF表示下一行,
而UNIX/Linux採用換行符LF表示下一行,
蘋果機(MAC OS系統)則採用回車符CR表示下一行.

CR用符號'/r’表示, 十進位制ASCII程式碼是13, 十六進位制程式碼為0x0D;
LF使用'/n’符號表示, 十進位制ASCII程式碼是10, 十六進位制程式碼為0x0A.

所以Windows平臺上換行在文字檔案中是使用 0x0d 0x0a 兩個位元組表示,
而UNIX和蘋果平臺上換行則是使用0x0a或0x0d一個位元組表示.













PROTOCOLS: UART - I2C - SPI - Serial communications #001(11:57)(YouTube)


Serial.write() (Arduino.cc)




void setup() {
  Serial.begin(1200);
  delay(1000);
}

void loop() {
Serial.write(0b01010101);
//Serial.write(85);
 //Serial.write(0x55);
 //  Serial.write('U');

//Serial.write(0b00110011);
// Serial.write('3');

  delay(20);
}


'U'

下降緣觸發
 Autoset

'3'    00110011


'5'   00110101



'U'  delay(10)  '3'



Serial.print() (Arduino.cc)
於Serial Monitor中顯示 印出後不換行


Serial.println() (Arduino.cc)
於Serial Monitor中顯示 印出後換行



void setup() {
  Serial.begin(1200);
  delay(1000);
}

void loop() {
 Serial.print(85);
 //Serial.println(85);
 //Serial.println(0x55,HEX);
 //Serial.println(0b01010101);
 //Serial.println('U');
 delay(100);
}


Serial.write() Writes binary data to the serial port.
This data is sent as a byte or series of bytes;
to send the characters representing the digits of a number use the Serial.print() function instead.

Serial.write(數)  : Serial.write(123)--->0111 1011


serial monitor 收到後印出 {


Serial.print(字)   : Serial.print(123)-->'1' ,'2' ,'3' 一共3個Byte
0011 0001  ,   0011 0010 , 0011 0011


Serial monitor :
一律將收到的binary 轉為ASCII code顯示出來
一律將欲傳送的資料一個一個的轉為binary傳送
為"人"與"電腦"的翻譯者



int sno;
void setup(){
  Serial.begin(115200);
 }
void loop(){
 sno=Serial.println(123);
 Serial.print("number bytes sent=");
 Serial.println(sno);
 delay(2000);
}



Serial.println(123) 從TX接腳送出5個byte
'1'--->00110001
'2'--->00110010
'3'--->00110011
 CR--->00001101
LF--->00001010

Serial Monitor 由RX接腳收到
00110001轉為 '1'
00110010轉為 '2'
00110011轉為 '3'
印出後,再執行兩個無法顯示之 "控制瑪"
 00001101-->CR
00001010-->LF



int sno;
void setup(){
  Serial.begin(115200);
 }
void loop(){
 sno=Serial.print(123);
 Serial.print("\t number bytes sent=");
 Serial.println(sno);
 delay(2000);
}


"\t" 為C語言之tab
Serial.write(9)--->00001001
Note: 不是
Serial.print(9) --->00111001


Serial.print(123) 送出 '1','2','3'  之binary 共3個byte,
Serial Monitor 收到後 使用ASCII Code 對照表 轉為123


int sno;
void setup(){
  Serial.begin(115200);
 }
void loop(){
 sno=Serial.print(123,HEX);
 Serial.print("\t number bytes sent=");
 Serial.println(sno);
 delay(2000);
}


Serial.print(123,HEX); 
將十進位之123轉為十六進位之7B
從TX接腳送出2個byte
'7'--->00110111
'B'--->01000010

Serial Monitor 由RX接腳收到
00110111 轉為  '7'印出
01000010 轉為  'B'印出

int sno;
void setup(){
  Serial.begin(115200);
 }
void loop(){
 sno=Serial.print(123,BIN);
 Serial.print("\t number bytes sent=");
 Serial.println(sno);
 delay(2000);
}


int sno;
void setup(){
  Serial.begin(115200);
 }
void loop(){
 sno=Serial.print(256,BIN);
 Serial.print("\t number bytes sent=");
 Serial.println(sno);
 delay(2000);
}



int sno;
void setup(){
  Serial.begin(115200);
 }
void loop(){
 sno=Serial.write(123);
 Serial.print("\t number bytes sent=");
 Serial.println(sno);
 delay(2000);
}