內容目錄
Serial 介紹
Arduino 與電腦之間接上USB線後就可以連線,
在USB線裡面就是有三條線來作為通訊橋梁
RX為接收,TX為傳輸,因此電腦的RX會對應到Arduino的TX,反之亦然。
傳輸的方式是一個一個bit傳送,也就是一堆0、1的訊號,
而鮑率就是傳送的速率,所以電腦與Ardunio要設定一樣的鮑率,
否則對應不起來,收到的資料就會無法解讀而形成一堆亂碼。
打印出字串
Serial.begin()
設置Serial port 通訊鮑率,括號內輸入鮑率的數值。
Serial.println()
將括號內的資料,透過Serial port傳輸給電腦,並從電腦中的序列埠監控視窗中顯示出來。
括號內用兩個雙引號包起來的意思為字串,ex: “hello world”
p.s. println()是會自動換行的,如果不換行的話要用print()
小練習
我們就練習最簡單的範例吧,每秒打印出 “hello world!!” 1次,
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("hello world!!");
delay(1000);
}
打開序列埠監控視窗
傳送訊息給Arduino
Serial.available()
當有資料透過序列傳輸進來Arduino時,資料會暫存在緩衝區。
而available()就是用來檢查是否有資料在緩衝區。
Serial.read()
透過read()就可以讀取緩衝區裡的資料。
小練習
這裡來做一個很簡單的練習,在序列埠監控視窗輸入甚麼,之後就打印出甚麼。
char receivedChar; //宣告字元變數
void setup() {
Serial.begin(115200);
}
void loop() {
//判斷是否有資料進來
if(Serial.available()>0){
receivedChar = Serial.read(); //讀取字元
Serial.println(receivedChar); //打印出字元
}
}
在下方輸入欄裡輸入ABCD
按下enter後,Arduino 就會依序打印出A B C D。
輸入’0’或’1’控制led
我們可以使用條件判斷式,來判斷收到的字元是’1’還是’0’。
如過是’1’,我們就打開Arduino板子上的led;
反之,是’0’的話,關閉led。
char receivedChar; //宣告字元變數
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN,OUTPUT);
}
void loop() {
//判斷是否有資料進來
if(Serial.available()>0){
receivedChar = Serial.read(); //讀取字元
}
//判斷收到'1'還是'0'
if(receivedChar == '1'){
digitalWrite(LED_BUILTIN, HIGH); //打開led
Serial.println("turn on");
}
else if(receivedChar == '0'){
digitalWrite(LED_BUILTIN, LOW); //關閉led
Serial.println("turn off");
}
}
匯率換算
Serial.parseInt()
用來讀取輸入資料裡面的有效的整數值。
這裡來練習一個簡單的匯率運算,輸入為台幣金額,之後會打印出換算好的美金金額。
int receivedNum; //宣告整數變數
const int rate=30; //匯率
void setup() {
Serial.begin(115200);
}
void loop() {
//判斷是否有資料進來
if(Serial.available()>0){
receivedNum = Serial.parseInt(); //讀取整數
Serial.print("TWD: ");
Serial.println(receivedNum);
Serial.print("USD: ");
Serial.println(receivedNum*rate);//將輸入的金額乘上匯率
}
}
最後!! 你喜歡這篇文章,或是這篇文章對你有幫助的話,也歡迎分享出去給需要的人,訂閱免費電子報獲得最新資訊😄😄😄