標籤:

【圖形化學習 Arduino】(三)串口通信

在編寫 Arduino 程序時,經常需要將一些信息傳輸給電腦,實現監測或調試的目的,常用的方式是串口通信。通過串口,Arduino 可以向 PC 或其他設備發送消息,也可以接收其他設備發送過來的信息。

通常意義上的串口指的是 UART,是由 RS232 發展而來的一個通信標準。RS232 標準介面是九針,9 個針腳的功能如下圖所示。Arduinon編程時常用的只有三個腳:RXD、TXD、GND,偶爾還會用到 DTR。

串口在工業上應用廣泛,但近幾年的個人電腦一般都不會再有串口,如果需要使用串口,則需要用一塊 USB 轉串口的晶元。Arduino 開發板中已經內置了 USBn轉串口功能,不需要再額外接其他的電路板。

以 Arduino Leonardo 為例,晶元中有兩個內置串口,其中一個自帶 USB 轉串口功能,另一個是板上的引腳n0 (RXD)和引腳 1(TXD)。前者常用於與 PC 通信,後者常用於與其他模塊通信。在nmBlock 中,勾選菜單「擴展」中的「通訊」,可以看到一些串口功能的積木塊。

先嘗試輸出字元串 "hello,world",間隔一秒輸出一次。

生成代碼:

#include <Arduino.h>n#include <Wire.h>n#include <Servo.h>n#include <SoftwareSerial.h>nn#include "MeSerial.h"nndouble angle_rad = PI / 180.0;ndouble angle_deg = 180.0 / PI;nMeSerial se;nnvoid setup()n{n Serial.begin(115200);n}nnvoid loop()n{n Serial.println("hello,world");n delay(1000 * 1);n}n

關鍵函數解釋:

//以 115200 的波特率初始化串口nSerial.begin(115200);n//發送字元串 hello,world ,並以回車結束nSerial.println("hello,world");n

先將 mBlock 的串口連接斷開,點擊右上角的「用 Arduino IDE 編輯」,在 Arduino IDE 中打開串口監視器,可以看到 Arduino 板向 PC 發送的信息。

對於 Arduino Leonardo,Serial 代表與 PC 通信的串口,Serial1 代表接在引腳 0 和 1 上的串口。mBlock 中並沒有支持 Serial1,可以手動修改代碼實現 Serial1 的通信功能。以nMakeblock 的串口彩屏為例,簡單的幾行代碼可以實現串口控制顯示屏。

用杜邦線將 Arduino 和顯示屏連接在一起,並燒錄以下代碼。

void setup()n{n Serial1.begin(9600);n}nvoid loop()n{n Serial1.print("CLS(0);"); // clear the screen with c colorn Serial1.print("DR2;");// the screen displays in upside-down wayn Serial1.print("CIR(30,100,20,3);");// display a circle of 20 radius at the position of coordinate (30, 100)n Serial1.print("CIR(110,110,80,6);"); // display a circle of 20 radius at the position of coordinate (110, 120)n Serial1.print("PL(10,10,200,200,4);");// display a straight line from coordinate (10,10) to coordinate (200,200)n Serial1.print("PL(280,10,30,200,5);"); // display a straight line from coordinate (280,10) to coordinate (300,200)n Serial1.print("BOX(50,20,230,150,2);");// display a rectangle from coordinate (50,20) to coordinate (230,150)n Serial1.println("BOXF(250,170,300,220,1);"); // display a solid rectangle from coordinate (250,170) to coordinate (300,220)n delay(3000);n}n

顯示結果如下圖:

最後,再推薦一個實用小工具:SerialChart 。SerialChart 可以將串口接收到的數據實時顯示為圖表,只需要配置簡單的幾個參數,無需編寫複雜的代碼實現顯示功能。在一些項目的參數調試時,十分有用。


推薦閱讀:

【圖形化學習 Arduino】(五)串口調試四神器
電氣小混混的環境盒子——持續更新
當樂高遇見Arduino:樂高喊你吃飯啦~
Arduino可通過哪些方式把數據發送到互聯網

TAG:Arduino |