Arduino初學

WindSpirit發表於2017-10-14

常見關鍵字

  1. 宣告變數及介面名稱(int val;int ledPin=13;)

  2. setup()——函式在程式開始時使用,可以初始化變數、介面模式、啟用庫等(例如:pinMode(ledPin,OUTUPT); )

  3. loop()——在setup()函式之後,即初始化之後,loop() 讓你的程式迴圈地被執行。使用它來運轉Arduino

  4. pinMode(介面名稱,OUTPUT或INPUT)將——介面定義為輸入或輸出介面,用在setup()函式裡。

  5. digitalWrite(介面名稱, HIGH或LOW)——將數字介面值至高或低

  6. digitalRead(介面名稱)——讀出數字介面的值。

  7. analogWrite(介面名稱, 數值)——給一個介面寫入模擬值(PWM波)。對於 ATmega168晶片的Arduino(包括Mini或BT),該函式可以工作於 3, 5, 6, 9,10和 11號介面。老的 ATmega8晶片的USB和 serial Arduino僅僅支援 9, 10和11號介面。

  8. analogRead(介面名稱)——從指定的模擬介面讀取值,Arduino對該模擬值進行10-bit的數字轉換,這個方法將輸入的0-5電壓值轉換為 0到1023間的整數 值。

  9. delay()——延時一段時間,delay(1000)為一秒。

  10. Serial.begin(波特率)——設定序列每秒傳輸資料的速率(波特率)。在同計算機通訊時,使用下面這些值:300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600或 115200。你也可以在任何時候使用其它的值,比如,與0號或1號插口通訊就要求特殊的波特率。用在setup()函式裡

  11. Serial.read()——讀取持續輸入的資料

  12. Serial.print(資料,資料的進位制)——從串列埠輸出資料。Serial.print(資料)預設為十進位制等於Serial.print(資料,DEC)

  13. Serial.println(資料,資料的進位制)——從串列埠輸出資料,跟隨一個回車和一個換行符。這個函式所取得的值與 Serial.print()一樣

數字A 與 模擬D

數字

程式裡我們會用到digitalRead()函式,在編寫程式的過程中有兩點值得我們注意的地方,一是在setup()函式中,會用到pinMode(inpin,INPUT)進行設定inPin介面為輸入介面,二是在loop()函式中,會用到digitalRead()來讀取數字介面的值,例如:val=digitalRead(inpin);。

模擬

在模擬介面中用函式analogread()和analogwrite()

串列埠通訊

TX(T:Transmitter 傳送)表示為Arduino傳送指令資訊給計算機,RX(R:Receive 接收)表示為Arduino接收來自計算機的指令資訊,當下載程式或與計算機通訊時,這兩個指示燈就會閃爍。
軟串列埠

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10,11); // RX, TX
 
void setup()  
{
 Serial.begin(9600);
 mySerial.begin(115200); 
}
 
void loop() // run over and over
{
   mySerial.listen();
   while (mySerial.available() > 0) 
   {
    char inByte =mySerial.read();
    Serial.write(inByte);
   }
}

Serial.available() 的意思是:返回串列埠緩衝區中當前剩餘的字元個數。一般用這個函式來判斷串列埠的緩衝區有無資料,當Serial.available()>0時,說明串列埠接收到了資料,可以讀取。

Serial.read()指從串列埠的緩衝區取出並讀取一個Byte的資料,比如有裝置通過串列埠向Arduino傳送資料了,我們就可以用Serial.read()來讀取傳送的資料。

典型的用法如下:

while (Serial.available()>0)
{
    data= Serial.read();
    delay(2);
}

上面程式碼的意思就是,當串列埠接收到資料時(上面Serial.available()>0這句),反覆讀取串列埠的資料並賦值給data (上面data= Serial.read()這句),直到資料讀完(即Serial.available()=0的時候)。