Arduino 語法手冊_第1頁
Arduino 語法手冊_第2頁
Arduino 語法手冊_第3頁
Arduino 語法手冊_第4頁
Arduino 語法手冊_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、#Arduino 語法    setup()     初始化函數(shù)    loop()      循環(huán)體函數(shù)    控制語句類似于C  /if        if.else       for

2、     switch case     while       do. while     break       continue        return    

3、  goto    擴展語法類似于C  /;(分號)     (花括號)     /(單行注釋)        /* */(多行注釋)     #define     #include    

4、;算數(shù)運算符類似于C  /=(賦值運算符)      +(加)        -(減)        *(乘)        /(除)        %(模)   

5、60;比較運算符類似于C  /=(等于)        !=(不等于)     <(小于)        >(大于)        <=(小于等于)     >=(大于等于)   

6、60;布爾運算符類似于C  /&&(與)     |(或)       !(非)    指針運算符類似于C  /* 取消引用運算符     & 引用運算符    位運算符類似于C      &

7、60;(bitwise and)     | (bitwise or)       (bitwise xor)      (bitwise not)     << (bitshift left)        

8、;>> (bitshift right)    復(fù)合運算符類似于C      + (increment)      - (decrement)      += (compound addition)      -= (compound&#

9、160;subtraction)       *= (compound multiplication)        /= (compound division)      &= (compound bitwise and)       |=

10、 (compound bitwise or)    常量  constants 預(yù)定義的常量      BOOL    true false        引腳電壓定義,HIGH和LOW【當讀?。╮ead)或?qū)懭耄╳rite)數(shù)字引腳時只有兩個可能的值: HIGH 和 LOW&#

11、160;】      HIGH(參考引腳)的含義取決于引腳(pin)的設(shè)置,引腳定義為INPUT或OUTPUT時含義有所不同。當一個引腳通過pinMode被設(shè)置為INPUT,并通過digitalRead讀?。╮ead)時。如果當前引腳的電壓大于等于3V,微控制器將會返回為HIGH。 引腳也可以通過pinMode被設(shè)置為INPUT,并通過digitalWrite設(shè)置為HIGH。輸入引腳的值將被一個內(nèi)在的20K上拉電阻 控制 在HIGH上,除非一個外部電路將其拉低到LOW。 當一個引腳通過pinMo

12、de被設(shè)置為OUTPUT,并digitalWrite設(shè)置為HIGH時,引腳的電壓應(yīng)在5V。在這種狀態(tài)下,它可以 輸出電流 。例如,點亮一個通過一串電阻接地或設(shè)置為LOW的OUTPUT屬性引腳的LED。      LOW的含義同樣取決于引腳設(shè)置,引腳定義為INPUT或OUTPUT時含義有所不同。當一個引腳通過pinMode配置為INPUT,通過digitalRead設(shè)置為讀取(read)時,如果當前引腳的電壓小于等于2V,微控制器將返回為LOW。 當一個引腳通過pinMode配置為OUTPUT,并通過dig

13、italWrite設(shè)置為LOW時,引腳為0V。在這種狀態(tài)下,它可以 倒灌 電流。例如,點亮一個通過串聯(lián)電阻連接到+5V,或到另一個引腳配置為OUTPUT、HIGH的的LED。        數(shù)字引腳(Digital pins)定義,INPUT和OUTPUT【數(shù)字引腳當作 INPUT 或 OUTPUT都可以 。用pinMode()方法使一個數(shù)字引腳從INPUT到OUTPUT變化】      

14、;Arduino(Atmega)引腳通過pinMode()配置為 輸入(INPUT) 即是將其配置在一個高阻抗的狀態(tài)。配置為INPUT的引腳可以理解為引腳取樣時對電路有極小的需求,即等效于在引腳前串聯(lián)一個100兆歐姆(Megohms)的電阻。這使得它們非常利于讀取傳感器,而不是為LED供電。      引腳通過pinMode()配置為 輸出(OUTPUT) 即是將其配置在一個低阻抗的狀態(tài)。      這意味著它們可以為電路提供充足的電流

15、。Atmega引腳可以向其他設(shè)備/電路提供(提供正電流positive current)或倒灌(提供負電流negative current)達40毫安(mA)的電流。這使得它們利于給LED供電,而不是讀取傳感器。輸出(OUTPUT)引腳被短路的接地或5V電路上會受到損壞甚至燒毀。Atmega引腳在為繼電器或電機供電時,由于電流不足,將需要一些外接電路來實現(xiàn)供電。        整數(shù)常量      進制  例子

16、0; 格式  備注      10(十進制) 123 無         2(二進制)  B1111011    前綴'B'   只適用于8位的值(0到255)字符0-1有效      8(八進制)  0173&#

17、160;   前綴”0”   字符0-7有效      16(十六進制)    0x7B    前綴”0x”  字符0-9,A-F,A-F有效        小數(shù)是十進制數(shù)。這是數(shù)學(xué)常識。如果一個數(shù)沒有特定的前綴,則默認為十進制。      

18、;二進制以2為基底,只有數(shù)字0和1是有效的。        'u' or 'U' 指定一個常量為無符號型。(只能表示正數(shù)和0) 例如: 33u      'l' or 'L' 指定一個常量為長整型。(表示數(shù)的范圍更廣) 例如: 100000L    

19、60; 'ul' or 'UL' 這個你懂的,就是上面兩種類型,稱作無符號長整型。 例如:32767ul        浮點常量      浮點數(shù) 被轉(zhuǎn)換為    被轉(zhuǎn)換為      10.0      &#

20、160; 10      2.34E5  2.34 * 105 234000      67E-12  67.0 * 10-12   0.000000000067    數(shù)據(jù)類型類似于C      void   

21、0;    boolean     char        unsigned char       byte        int     unsigned int    

22、;    word      long        unsigned long       float       double      string - char array

23、     String - object     array -(數(shù)組)    數(shù)據(jù)類型轉(zhuǎn)換類似于C      char()      byte()      int()      

24、0;word()      long()      float()      word()      把一個值轉(zhuǎn)換為word數(shù)據(jù)類型的值,或由兩個字節(jié)創(chuàng)建一個字符。      word(x)       word(h, 

25、l)      參數(shù)      X:任何類型的值       H:高階(最左邊)字節(jié)       L:低序(最右邊)字節(jié)    修飾符類似于C      static      v

26、olatile        const    輔助工具      sizeof()    數(shù)字 I/O      pinMode()      將指定的引腳配置成輸出或輸入【pinMode(pin, mode) pin:要設(shè)置模

27、式的引腳  mode:INPUT或OUTPUT】      例子:      ledPin = 13 / LED連接到數(shù)字腳13      void setup()               

28、60;pinMode(ledPin,OUTPUT); /設(shè)置數(shù)字腳為輸出            void loop()                digitalWrite(ledPin,HIGH); /點亮LED      &

29、#160;   delay(1000);                  / 等待一秒          digitalWrite(ledPin, LOW);    / 滅掉LED   &

30、#160;      delay(1000);  /等待第二個              digitalWrite()      給一個數(shù)字引腳寫入HIGH或者LOW。      如果一個引腳已經(jīng)使用pinMode()配置為OUTPUT模式,其電壓將被設(shè)置為相

31、應(yīng)的值,HIGH為5V(3.3V控制板上為3.3V),LOW為0V。      如果引腳配置為INPUT模式,使用digitalWrite()寫入HIGH值,將使內(nèi)部20K上拉電阻(詳見數(shù)字引腳教程)。寫入LOW將會禁用上拉。上拉電阻可以點亮一個LED讓其微微亮,如果LED工作,但是亮度很低,可能是因為這個原因引起的。補救的辦法是 使用pinMode()函數(shù)設(shè)置為輸出引腳。      注意:數(shù)字13號引腳難以作為數(shù)字輸入使用,因為大部分的控制板上使用了一顆LED與一

32、個電阻連接到他。如果啟動了內(nèi)部的20K上拉電阻,他的電壓將在1.7V左右,而不是正常的5V,因為板載LED串聯(lián)的電阻把他使他降了下來,這意味著他返回的值總是LOW。如果必須使用數(shù)字13號引腳的輸入模式,需要使用外部上拉下拉電阻。        digitalRead()      digitalRead(PIN)【pin:你想讀取的引腳號(int),返回 HIGH 或 LOW】    &

33、#160; 例子:      ledPin = 13 / LED連接到13腳      int inPin = 7;   / 按鈕連接到數(shù)字引腳7      int val = 0;  /定義變量存以儲讀值   

34、0;  void setup()                pinMode(ledPin, OUTPUT);      / 將13腳設(shè)置為輸出          pinMode(inPin, INPUT); 

35、;     / 將7腳設(shè)置為輸入            void loop()                val = digitalRead(inPin);   / 讀取輸入腳 

36、;         digitalWrite(ledPin, val);    /將LED值設(shè)置為按鈕的值          模擬 I/O      analogReference()      analogReference(t

37、ype)      配置用于模擬輸入的基準電壓(即輸入范圍的最大值)。選項有:      DEFAULT:默認5V(Arduino板為5V)或3.3伏特(Arduino板為3.3V)為基準電壓。      INTERNAL:在ATmega168和ATmega328上以1.1V為基準電壓,以及在ATmega8上以2.56V為基準電壓(Arduino Mega無此選項)   

38、60;  INTERNAL1V1:以1.1V為基準電壓(此選項僅針對Arduino Mega)      INTERNAL2V56:以2.56V為基準電壓(此選項僅針對Arduino Mega)      EXTERNAL:以AREF引腳(0至5V)的電壓作為基準電壓。      type:使用哪種參考類型(DEFAULT, INTERNAL, INTERN

39、AL1V1, INTERNAL2V56, 或者 EXTERNAL)      改變基準電壓后,之前從anal?ogRead()讀取的數(shù)據(jù)可能不準確。      不要在AREF引腳上使用使用任何小于0V或超過5V的外部電壓。如果你使用AREF引腳上的電壓作為基準電壓,你在調(diào)用analogRead()前必須設(shè)置參考類型為EXTERNAL。否則,你將會削短有效的基準電壓(內(nèi)部產(chǎn)生)和AREF引腳,這可能會損壞您Arduino板上的單片機。 &

40、#160;    另外,您可以在外部基準電壓和AREF引腳之間連接一個5K電阻,使你可以在外部和內(nèi)部基準電壓之間切換。請注意,總阻值將會發(fā)生改變,因為AREF引腳內(nèi)部有一個32K電阻。這兩個電阻都有分壓作用。所以,例如,如果輸入2.5V的電壓,最終在在AREF引腳上的電壓將為2.5 * 32 /(32 + 5)= 2.2V。        analogRead()    

41、60; 從指定的模擬引腳讀取數(shù)據(jù)值。 Arduino板包含一個6通道(Mini和Nano有8個通道,Mega有16個通道),10位模擬數(shù)字轉(zhuǎn)換器。這意味著它將0至5伏特之間的輸入電壓映射到0至1023之間的整數(shù)值。這將產(chǎn)生讀數(shù)之間的關(guān)系:5伏特/ 1024單位,或0.0049伏特(4.9 mV)每單位。輸入范圍和精度可以使用analogReference()改變。 它需要大約100微秒(0.0001)來讀取模擬輸入,所以最大的閱讀速度是每秒10000次。      analogRead

42、(PIN)      引腳:從輸入引腳(大部分板子從0到5,Mini和Nano從0到7,Mega從0到15)讀取數(shù)值,返回從0到1023的整數(shù)值      例子:      int analogPin = 3;    /電位器(中間的引腳)連接到模擬輸入引腳3       

43、60;                    /另外兩個引腳分別接地和+5 V      int val = 0;  /定義變量來存儲讀取的數(shù)值      void setup()  

44、60;             serial.begin(9600); /設(shè)置波特率(9600)            void loop()               

45、0;val = analogRead(analogPin); /從輸入引腳讀取數(shù)值          serial.println(val); /顯示讀取的數(shù)值              analogWrite() - PWM      a

46、nalogWrite(pin,value)      從一個引腳輸出模擬值(PWM)??捎糜谧孡ED以不同的亮度點亮或驅(qū)動電機以不同的速度旋轉(zhuǎn)。analogWrite()輸出結(jié)束后,該引腳將產(chǎn)生一個穩(wěn)定的特殊占空比方波,直到下次調(diào)用analogWrite()(或在同一引腳調(diào)用digitalRead()或digitalWrite())。PWM信號的頻率大約是490赫茲。      在大多數(shù)arduino板(ATmega168或ATmega328),只有引腳3,5,6,9,10和

47、11可以實現(xiàn)該功能。在aduino Mega上,引腳2到13可以實現(xiàn)該功能。老的Arduino板(ATmega8)的只有引腳9、10、11可以使用analogWrite()。在使用analogWrite()前,你不需要調(diào)用pinMode()來設(shè)置引腳為輸出引腳。      analogWrite函數(shù)與模擬引腳、analogRead函數(shù)沒有直接關(guān)系。      pin:用于輸入數(shù)值的引腳。      

48、0;value:占空比:0(完全關(guān)閉)到255(完全打開)之間。      例子:      int ledPin = 9;  / LED連接到數(shù)字引腳9      int analogPin = 3;  /電位器連接到模擬引腳3      int&

49、#160;val = 0;  /定義變量存以儲讀值      void setup()                pinMode(ledPin,OUTPUT);  /設(shè)置引腳為輸出引腳          &

50、#160; void loop()                val = analogRead(analogPin);  /從輸入引腳讀取數(shù)值          analogWrite(ledPin,val / 4);  / 

51、以val / 4的數(shù)值點亮LED(因為analogRead讀取的數(shù)值從0到1023,而analogWrite輸出的數(shù)值從0到255)          高級 I/O      tone()      在一個引腳上產(chǎn)生一個特定頻率的方波(50%占空比)。持續(xù)時間可以設(shè)定,否則波形會一直產(chǎn)生直到調(diào)用noTone()函數(shù)。該引腳可以連接壓電蜂鳴器或其他喇

52、叭播放聲音。      在同一時刻只能產(chǎn)生一個聲音。如果一個引腳已經(jīng)在播放音樂,那調(diào)用tone()將不會有任何效果。如果音樂在同一個引腳上播放,它會自動調(diào)整頻率。      使用tone()函數(shù)會與3腳和11腳的PWM產(chǎn)生干擾(Mega板除外)。      注意:如果你要在多個引腳上產(chǎn)生不同的音調(diào),你要在對下一個引腳使用tone()函數(shù)前對此引腳調(diào)用noTone()函數(shù)。    

53、;  tone(pin, frequency)       tone(pin, frequency, duration)      pin:要產(chǎn)生聲音的引腳       frequency: 產(chǎn)生聲音的頻率,單位Hz,類型unsigned int       

54、duration:聲音持續(xù)的時間,單位毫秒(可選),類型unsigned long        noTone()      停止由tone()產(chǎn)生的方波。如果沒有使用tone()將不會有效果。      noTone(pin)      pin: 所要停止產(chǎn)生聲音的引腳    

55、    shiftOut()      將一個數(shù)據(jù)的一個字節(jié)一位一位的移出。從最高有效位(最左邊)或最低有效位(最右邊)開始。依次向數(shù)據(jù)腳寫入每一位,之后時鐘腳被拉高或拉低,指示剛才的數(shù)據(jù)有效。      注意:如果你所連接的設(shè)備時鐘類型為上升沿,你要確定在調(diào)用shiftOut()前時鐘腳為低電平,如調(diào)用digitalWrite(clockPin, LOW)。     

56、0;注意:這是一個軟件實現(xiàn);Arduino提供了一個硬件實現(xiàn)的SPI庫,它速度更快但只在特定腳有效。      shiftOut(dataPin, clockPin, bitOrder, value)      dataPin:輸出每一位數(shù)據(jù)的引腳(int)       clockPin:時鐘腳,當dataPin有值時此引腳電平變化(int)   

57、    bitOrder:輸出位的順序,最高位優(yōu)先或最低位優(yōu)先       value: 要移位輸出的數(shù)據(jù)(byte)      dataPin和clockPin要用pinMode()配置為輸出。 shiftOut目前只能輸出1個字節(jié)(8位),所以如果輸出值大于255需要分兩步。      /最高有效位優(yōu)先串行輸出   

58、;   int data= 500;      /移位輸出高字節(jié)      shiftOut(dataPin, clock, MSBFIRST, (data >> 8);        /移位輸出低字節(jié)      shiftOu

59、t(data, clock, MSBFIRST, data);      /最低有效位優(yōu)先串行輸出      data = 500;      /移位輸出低字節(jié)      shiftOut(dataPin, clock, LSBFIRST, data);  &

60、#160;     /移位輸出高字節(jié)      shiftOut(dataPin, clock, LSBFIRST, (data >> 8);      例子:      相應(yīng)電路,查看tutorial on controlling a 74HC595 sh

61、ift register      /引腳連接到74HC595的ST_CP      int latchPin = 8;      /引腳連接到74HC595的SH_CP      int clockPin = 12;      

62、/ /引腳連接到74HC595的DS      int dataPin = 11;      void setup()       /設(shè)置引腳為輸出          pinMode(latchPin, OUTPUT);  

63、60;       pinMode(clockPin, OUTPUT);          pinMode(dataPin, OUTPUT);            void loop()       

64、0;   /向上計數(shù)程序          for(J = 0; J <256; J + +)              /傳輸數(shù)據(jù)的時候?qū)atchPin拉低        

65、;      digitalWrite(latchpin, LOW);              shiftOut(dataPin,clockPin,LSBFIRST,J);              /之后將latchPin拉高以告訴芯片 

66、;             /它不需要再接受信息了              digitalWrite(latchpin, HIGH);              delay(10

67、00);                        shiftIn()      將一個數(shù)據(jù)的一個字節(jié)一位一位的移入。從最高有效位(最左邊)或最低有效位(最右邊)開始。對于每個位,先拉高時鐘電平,再從數(shù)據(jù)傳輸線中讀取一位,再將時鐘線拉低。     

68、; 注意:這是一個軟件實現(xiàn);Arduino提供了一個硬件實現(xiàn)的SPI庫,它速度更快但只在特定腳有效。      shiftIn(dataPin,clockPin,bitOrder)      dataPin:輸出每一位數(shù)據(jù)的引腳(int)       clockPin:時鐘腳,當dataPin有值時此引腳電平變化(int)      &#

69、160;bitOrder:輸出位的順序,最高位優(yōu)先或最低位優(yōu)先        pulseIn()      讀取一個引腳的脈沖(HIGH或LOW)。例如,如果value是HIGH,pulseIn()會等待引腳變?yōu)镠IGH,開始計時,再等待引腳變?yōu)長OW并停止計時。返回脈沖的長度,單位微秒。如果在指定的時間內(nèi)無脈沖函數(shù)返回。      此函數(shù)的計時功能由經(jīng)驗決定,長時間的脈沖計時可能會出錯。計時范圍

70、從10微秒至3分鐘。(1秒=1000毫秒=1000000微秒)      pulseIn(pin, value)       pulseIn(pin, value, timeout)      pin:你要進行脈沖計時的引腳號(int)。       value:要讀取的脈沖類型,HIGH或LOW(int)。

71、       timeout (可選):指定脈沖計數(shù)的等待時間,單位為微秒,默認值是1秒(unsigned long)      返回:脈沖長度(微秒),如果等待超時返回0(unsigned long)      例子:      int pin = 7;   

72、;   unsigned long duration;      void setup()                pinMode(pin, INPUT);            vo

73、id loop()                duration = pulseIn(pin, HIGH);          時間      millis()      返回A

74、rduino開發(fā)板從運行當前程序開始的毫秒數(shù)。這個數(shù)字將在約50天后溢出(歸零)      例子:      unsigned long time;      void setup()          Serial.begin(9600);    

75、        void loop()          serial.print("Time:");          time = millis();         

76、0;/打印從程序開始到現(xiàn)在的時間          serial.println(time);          /等待一秒鐘,以免發(fā)送大量的數(shù)據(jù)          delay(1000);         &

77、#160;  參數(shù) millis 是一個無符號長整數(shù),試圖和其他數(shù)據(jù)類型(如整型數(shù))做數(shù)學(xué)運算可能會產(chǎn)生錯誤        micros()      返回 Arduino 開發(fā)板從運行當前程序開始的微秒數(shù)。這個數(shù)字將在約70分鐘后溢出(歸零)。在 16MHz 的 Arduino 開發(fā)板上(比如 Duemilanove 和 Na

78、no),這個函數(shù)的分辨率為四微秒(即返回值總是四的倍數(shù))。在 8MHz 的 Arduino 開發(fā)板上(比如 LilyPad),這個函數(shù)的分辨率為八微秒。      注意 :每毫秒是1,000微秒,每秒是1,000,000微秒。      例子:      unsigned long time;    

79、;  void setup()          Serial.begin(9600);            void loop()          Serial.print(“Time:”);   

80、60;      time = micros();          /打印從程序開始的時間          Serial.println(time);          /等待一秒鐘,以免發(fā)送大量的數(shù)據(jù) &

81、#160;        delay(1000);              delay()      使程序暫停設(shè)定的時間(單位毫秒)。(一秒等于1000毫秒)      參數(shù):ms:暫停的毫秒數(shù)(unsigned long)  

82、;    例子:      ledPin = 13 / / LED連接到數(shù)字13腳      void setup()                pinMode(ledPin, OUTPUT); 

83、     / 設(shè)置引腳為輸出            void loop()                digitalWrite(ledPin, HIGH);   / 點亮LED 

84、0;        delay(1000);                  / 等待1秒          digitalWrite(ledPin, LOW);    /

85、60;滅掉LED          delay(1000);                  / 等待一秒            雖然創(chuàng)建一個使用delay()的閃爍LED很簡單,并且許多

86、例子將很短的delay用于消除開關(guān)抖動,delay()確實擁有很多顯著的缺點。在delay函數(shù)使用的過程中,讀取傳感器值、計算、引腳操作均無法執(zhí)行,因此,它所帶來的后果就是使其他大多數(shù)活動暫停。其他操作定時的方法請參加millis()函數(shù)和它下面的例子。大多數(shù)熟練的程序員通常避免超過10毫秒的delay(),除非arduino程序非常簡單。      但某些操作在delay()執(zhí)行時任然能夠運行,因為delay函數(shù)不會使中斷失效。通信端口RX接收到得數(shù)據(jù)會被記錄,PWM(analogWrite)值和引腳狀態(tài)會保持,中斷也會按設(shè)定的執(zhí)行

87、。        delayMicroseconds()      使程序暫停指定的一段時間(單位微秒)。一毫秒等于一千微秒,一秒等于1000000微秒。 目前,能夠產(chǎn)生的最大的延時準確值是16383。這可能會在未來的Arduino版本中改變。對于超過幾千微秒的延遲,你應(yīng)該使用delay()代替。      例子:      i

88、nt outPin = 8;                 / digital pin 8      void setup()              &#

89、160; pinMode(outPin,OUTPUT); /設(shè)置為輸出的數(shù)字管腳            void loop()                digitalWrite(outPin,HIGH); /設(shè)置引腳高電平    &#

90、160;     delayMicroseconds(50);        / 暫停50微秒          digitalWrite(outPin, LOW);    / 設(shè)置引腳低電平         

91、 delayMicroseconds(50);        / 暫停50微秒          數(shù)學(xué)運算      min()       max()       abs()  

92、    constrain(x,a,b)【將一個數(shù)約束在一個范圍內(nèi)】      map(value, fromLow, fromHigh, toLow, toHigh)      value:需要映射的值       fromLow:當前范圍值的下限      

93、0;fromHigh:當前范圍值的上限       toLow:目標范圍值的下限       toHigh:目標范圍值的上限      例子:      void setup()      void loop()    

94、            int val = analogRead(0);          val = map(val, 0, 1023, 0, 255);          analogW

95、rite(9, val);            數(shù)學(xué)實現(xiàn)      long map(long x, long in_min, long in_max, long out_min, long out_max)        &#

96、160;     return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;              pow(base, exponent)   

97、60; sqrt(x)    三角函數(shù)      sin()       cos()       tan()    隨機數(shù)      randomSeed()【隨機數(shù)種子】     random()【

98、random(max),random(min, max)】    位操作      lowByte()   取一個變量(例如一個字)的低位(最右邊)字節(jié)。      highByte()  提取一個字節(jié)的高位(最左邊的),或一個更長的字節(jié)的第二低位。      bitRead()   讀取

99、一個數(shù)的位。bitRead(x, n) X:想要被讀取的數(shù) N:被讀取的位,0是最重要(最右邊)的位    該位的值(0或1)      bitWrite()  在位上寫入數(shù)字變量   bitWrite(x, n, b)   X:要寫入的數(shù)值變量 N:要寫入的數(shù)值變量的位,從0開始是最低(最右邊)的位 B:寫入位的數(shù)值(0或1) 

100、0;    bitSet()    為一個數(shù)字變量設(shè)置一個位    bitSet(x, n)    X:想要設(shè)置的數(shù)字變量 N:想要設(shè)置的位,0是最重要(最右邊)的位      bitClear()  清除一個數(shù)值型數(shù)值的指定位(將此位設(shè)置成 0) bitClear(x, n)  X:指定

101、要清除位的數(shù)值 N:指定要清除位的位置,從0開始,0 表示最右端位      bit()   計算指定位的值(0位是1,1位是2,2位4,以此類推) bit(n)  需要計算的位    設(shè)置中斷函數(shù)      attachInterrupt()      attachInterrupt(interr

102、upt, function, mode)      當發(fā)生外部中斷時,調(diào)用一個指定函數(shù)。當中斷發(fā)生時,該函數(shù)會取代正在執(zhí)行的程序。大多數(shù)的Arduino板有兩個外部中斷:0(數(shù)字引腳2)和1(數(shù)字引腳3)。      arduino Mege有四個外部中斷:數(shù)字2(引腳21),3(20針),4(引腳19),5(引腳18)        interrupt:中斷引腳數(shù)&

103、#160;      function:中斷發(fā)生時調(diào)用的函數(shù),此函數(shù)必須不帶參數(shù)和不返回任何值。該函數(shù)有時被稱為中斷服務(wù)程序。       mode:定義何時發(fā)生中斷以下四個contstants預(yù)定有效值:      LOW 當引腳為低電平時,觸發(fā)中斷      CHANGE 當引腳電平發(fā)生改變時,觸發(fā)中斷  

104、;    RISING 當引腳由低電平變?yōu)楦唠娖綍r,觸發(fā)中斷      FALLING 當引腳由高電平變?yōu)榈碗娖綍r,觸發(fā)中斷.        當中斷函數(shù)發(fā)生時,delya()和millis()的數(shù)值將不會繼續(xù)變化。當中斷發(fā)生時,串口收到的數(shù)據(jù)可能會丟失。你應(yīng)該聲明一個變量來在未發(fā)生中斷時儲存變量。      在單片機自動化程序中當突發(fā)事件

105、發(fā)生時,中斷是非常有用的,它可以幫助解決時序問題。一個使用中斷的任務(wù)可能會讀一個旋轉(zhuǎn)編碼器,監(jiān)視用戶的輸入。      如果你想以確保程序始終抓住一個旋轉(zhuǎn)編碼器的脈沖,從來不缺少一個脈沖,它將使寫一個程序做任何事情都要非常棘手,因為該計劃將需要不斷輪詢的傳感器線編碼器,為了趕上脈沖發(fā)生時。其他傳感器也是如此,如試圖讀取一個聲音傳感器正試圖趕上一按,或紅外線槽傳感器(照片滅弧室),試圖抓住一個硬幣下降。在所有這些情況下,使用一個中斷可以釋放的微控制器來完成其他一些工作。     

106、0;  例子:      int pin = 13;      volatile int state = LOW;             void setup()       &

107、#160;        pinMode(pin, OUTPUT);          attachInterrupt(0, blink, CHANGE);            void loop()     

108、;           digitalWrite(pin, state);            void blink()                state = 

109、!state;              detachInterrupt()      關(guān)閉給定的中斷      detachInterrupt(interrupt)      interrupt: 中斷禁用的數(shù)(0或者1)    

110、;  開關(guān)中斷      interrupts()      重新啟用中斷(使用noInterrupts()命令后將被禁用)。中斷允許一些重要任務(wù)在后臺運行,默認狀態(tài)是啟用的。禁用中斷后一些函數(shù)可能無法工作,并傳入信息可能會被忽略。中斷會稍微打亂代碼的時間,但是在關(guān)鍵部分可以禁用中斷      noInterrupts()      禁止

111、中斷(重新使能中斷interrupts())。中斷允許在后臺運行一些重要任務(wù),默認使能中斷。禁止中斷時部分函數(shù)會無法工作,通信中接收到的信息也可能會丟失。      中斷會稍影響計時代碼,在某些特定的代碼中也會失效      例子:      void setup()      void loop()   &

112、#160;            noInterrupts();          /關(guān)鍵的、時間敏感的代碼放在這          interrupts();          

113、/其他代碼放在這      通訊  Serial  用于Arduino控制板和一臺計算機或其他設(shè)備之間的通信。所有的Arduino控制板有至少一個串口(又稱作為UART或USART)。它通過0(RX)和1(TX)數(shù)字引腳經(jīng)過串口轉(zhuǎn)換芯片連接計算機USB端口與計算機進行通信。因此,如果你使用這些功能的同時你不能使用引腳0和1作為輸入或輸出。  您可以使用Arduino IDE內(nèi)置的串口監(jiān)視器與Arduino板通信。點擊工具欄上的串口監(jiān)視器按鈕,調(diào)用begin()函數(shù)(

114、選擇相同的波特率)。  Arduino Mega 有三個額外的串口:Serial 1使用19(RX)和18(TX),Serial 2使用17(RX)和16(TX),Serial3使用15(RX)和14(TX)。 若要使用這三個引腳與您的個人電腦通信,你需要一個額外的USB轉(zhuǎn)串口適配器,因為這三個引腳沒有連接到Mega上的USB轉(zhuǎn)串口適配器。若要用它們來與外部的TTL串口設(shè)備進行通信,將TX引腳連接到您的設(shè)備的RX引腳,將RX引腳連接到您的設(shè)備的TX引腳,將GND連接到您的設(shè)備的GND。(不要直接將這些引腳直接連接到RS232

115、串口;他們的工作電壓在+/- 12V,可能會損壞您的Arduino控制板。)  Arduino Leonardo板使用Serial 1通過0(RX)和1(TX)與viaRS-232通信,。Serial預(yù)留給使用Mouse and Keyboard libarariies的USB CDC通信 。更多信息,請參考Leonardo 開始使用頁和硬件頁。  函數(shù):      if (Serial)

116、0;         表示指定的串口是否準備好          在Leonardo上,if(Serial)表示不論有無USB CDC,串行連接都是開放的。對于所有其他的情況,包括Leonardo上的if(Serial1),將一直返回true。 這來自于 Arduino 1.0.1 版本的介紹     

117、60;    對于所有的arduino板:  if (Serial)          Arduino Leonardo 特有:    if (Serial1)          Arduino Mega 特有:  &#

118、160;           if (Serial1)               if (Serial2)               if (Serial3

119、)        available()          獲取從串口讀取有效的字節(jié)數(shù)(字符)。這是已經(jīng)傳輸?shù)?,并存儲在串行接收緩沖區(qū)(能夠存儲64個字節(jié))的數(shù)據(jù)。 available()繼承了 Stream類          Serial.available()   

120、;       僅適用于Arduino Mega :           Serial1.available()           Serial2.available()          

121、; Serial3.available()          例子:          incomingByte = 0; /傳入的串行數(shù)據(jù)          void setup()     

122、60;         Serial.begin(9600);     / 打開串行端口,設(shè)置傳輸波特率為9600 bps                    void loop()    

123、;           /只有當你接收到數(shù)據(jù)時才會發(fā)送數(shù)據(jù),:              if (Serial.available() > 0)              &

124、#160;/讀取傳入的字節(jié):                  incomingByte = Serial.read();                  /顯示你得到的數(shù)據(jù):   

125、60;              Serial.print("I received: ");                  Serial.println(incomingByte, DEC);   

126、;                                     begin()          將串行數(shù)據(jù)傳輸速率設(shè)

127、置為位/秒(波特)。與計算機進行通信時,可以使用這些波特率:300,1200,2400,4800,9600,14400,19200,28800,38400,57600或115200。當然,您也可以指定其他波特率 - 例如,引腳0和1和一個元件進行通信,它需要一個特定的波特率          Serial.begin(speed) 僅適用于Arduino Mega : Serial1.begin(speed) Serial2.

128、begin(speed) Serial3.begin(speed)          speed: 位/秒 (波特) - long                end()          停用串行通信,使RX和TX引腳用于一般輸入和輸出。要重新使用串行通信, 需要 Serial.begin()語句          Serial.end()          僅適用于Arduino Mega: Serial1.end() Serial2.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論