Arduino語言介紹git
Arduino語言是創建在C/C++基礎上的,其基礎是C語言,Arduino語言只不過把AVR單片機(微控制器)相關的一些參數設置都函數化,不用咱們去了解他的底層,讓不瞭解AVR單片機(微控制器)的朋友也能輕鬆上手。數組
關鍵字:dom
- if 條件選擇語句
- if...else 條件選擇語句
- for for 循環語句
- switch case 並行多分支選擇
- while 循環語句
- do... while 循環語句
- break 強制跳出循環
- continue 繼續
- return 返回
- goto 無條件轉移
變量的做用範圍(做用域):ide
做用範圍與該變量在哪兒聲明有關,大體分爲以下兩種。函數
一、全局變量:若在程序開頭的聲明區或者是在沒有大括號限制的聲明區,所聲明的變量的做用域爲整個程序。oop
二、局部變量:若在大括號內的聲明區所聲明的變量,其做用域將受限於大括號。若在主程序與各函數中都聲明瞭相同名稱的變量,則離開主程序或函數,該變量將自動消失。ui
語法符號:spa
- ; 每一個語句和數據定義的最後必須有一個分號,這個千萬不要漏寫了。
- {} 大括號內的內容是函數體,即{......}。
- / * * / C語言的註釋以 / * 開始,以 * / 結束,註釋能夠跟在指令以後,也能夠在獨立一行中。
- // 註釋也能夠用 「//」開頭,該符號右邊整行都是註釋。
賦值運算符:線程
- = (指定) 例如:A=x 將x變量的值放入A變量;
- += (加入) 例如:B+=x 將B變量的值與x變量的值相加,其和放入B變量,與B=B+x相同。
- -= (減去) 例如:C-=x 將C變量的值減去x變量的值,其差放入C變量,與C=C-x相同。
- *= (乘入) 例如:D*=x 將D變量的值與x變量的值相乘,其積放入D變量,與D=D*x相同。
- /= (除) 例如:E/=x 將E變量的值除以x變量的值,其商放入E變量,與E=E/x相同。
- %= (取餘) 例如:F%=x 將F變量的值除以x變量的值,其他數放入F變量,與F=F%x相同。
- &= (或運算) 例如:G&=x 將G變量的值與x變量的值相AND運算,其結果放入G變量,與G=G&x相同。
- |= (或運算) 例如:H|=x 將H變量的值與x變量的值相OR運算,其結果放入H變量,與H=H|x相同。
- ^= (互斥或) 例如:I^=x 將I變量的值與x變量的值相XOR運算,其結果放入I變量,與I=I^x相同。
- <<= (左移) 例如:J<<=n 將J變量的值左移n位,與J=J<<n相同。
- >>= (右移) 例如:K>>=n 將K變量的值右移n位,與K=K>>n相同。
算數運算符:
- + (加) 例如:A=x+y 將x與y變量的值相加,其和放入A變量;
- - (減) 例如:B=x-y 將x變量的值減去y變量的值,其差放入B變量;
- * (乘)例如:C=x*y 將x與y變量的值相乘,其積放入C變量;
- / (除)例如:D=x/y 將x變量的值除以y變量的值,其商放入D變量;
- % (取餘)例如:E=x%y 將x變量的值除以y變量的值,其他數放入E變量;
關係運算符:
- == (相等)例如:x==y 比較x與y變量的值是否相等,相等則其結果爲1,不相等則爲0;
- != (不等)例如:x!=y 比較x與y變量的值是否相等,不相等則其結果爲1,相等則爲0;
- < (小於)例如:x<y 若x變量的值小於y變量的值,其結果爲1,不然爲0;
- > (大於)例如:x>y 若x變量的值大於y變量的值,其結果爲1,不然爲0;
- <= (小等於)例如: x<=y 若x變量的值小等於y變量的值,其結果爲1,不然爲0;
- >= (大等於)例如: x>=y 若x變量的值大等於y變量的值,其結果爲1,不然爲0;
邏輯運算符:
- && (與運算)
- 例(x>y)&&(y>z)若x變量的值大於y變量的值,且y變量的值大於z變量的值,則其結果爲1,不然爲0。
- || (或運算)
- 例(x>y)||(y>z)若x變量的值大於y變量的值,或y變量的值大於z變量的值,則其結果爲1,不然爲0。
- ! (非運算)例 !(x>y) 若x變量的值大於y變量的值,則其結果爲0,不然爲1。
遞增/減運算符:
- ++ (加1) 例如:x++ 將x變量的值加1;(在使用i以後,再使i值加1)
- -- (減1) 例如:x-- 將x變量的值減1。(在使用i以後,再使i值減1)
數據類型:
- char 字符 8bit
- unsigned char 無符號字符 8bit
- int 整數 16bit
- unsigned int 無符號整數 16bit
- long 長整數 32bit
- unsigned long 無符號長整數 32bit
- float 浮點數 32bit
- double 雙倍精度浮點數 64bit
- array 數組
- void 無 0
爲何要定義變量?定義變量就至關於給存儲地址取個名字。
數據類型轉換:
- char()
- byte()
- int()
- long()
- float()
常量:
- HIGH / LOW 表示數字IO口的電平,HIGH 表示高電平(1),LOW 表示低電平(0)。
- INPUT / OUTPUT 表示數字IO口的方向,INPUT 表示輸入(高阻態),OUTPUT 表示輸出(AVR能提供5V電壓 40mA電流)。
- true / false true 表示真(1),false表示假(0)。
結構
- void setup() 初始化變量,管腳模式,調用庫函數等
- void loop() 連續執行函數內的語句
功能
數字 I/O
- pinMode(pin, mode) 數字IO口輸入輸出模式定義函數,pin表示爲0~13, mode表示爲INPUT或OUTPUT。
- digitalWrite(pin, value) 數字IO口輸出電平定義函數,pin表示爲0~13,value表示爲HIGH或LOW。好比定義HIGH能夠驅動LED。
- int digitalRead(pin) 數字IO口讀輸入電平函數,pin表示爲0~13,value表示爲HIGH或LOW。好比能夠讀數字傳感器。
模擬 I/O
- int analogRead(pin) 模擬IO口讀函數,pin表示爲0~5(Arduino Diecimila爲0~5,Arduino nano爲0~7)。好比能夠讀模擬傳感器(10位AD,0~5V表示爲0~1023)。
- analogWrite(pin, value) - PWM 數字IO口PWM輸出函數,Arduino數字IO口標註了PWM的IO口可以使用該函數,pin表示3, 5, 6, 9, 10, 11,value表示爲0~255。好比可用於電機PWM調速或音樂播放。
擴展 I/O
- shiftOut(dataPin, clockPin, bitOrder, value) SPI外部IO擴展函數,一般使用帶SPI接口的74HC595作8個IO擴展,dataPin爲數據口,clockPin爲時鐘口,bitOrder爲數據傳輸方向(MSBFIRST高位在前,LSBFIRST低位在前),value表示所要傳送的數據(0~255),另外還須要一個IO口作74HC595的使能控制。
- unsigned long pulseIn(pin, value) 脈衝長度記錄函數,返回時間參數(us),pin表示爲0~13,value爲HIGH或LOW。好比value爲HIGH,那麼當pin輸入爲高電平時,開始計時,當pin輸入爲低電平時,中止計時,而後返回該時間。
時間函數
- unsigned long millis() 返回時間函數(單位ms),該函數是指,當程序運行就開始計時並返回記錄的參數,該參數溢出大概須要50天時間。
- delay(ms) 延時函數(單位ms)。
- delayMicroseconds(us) 延時函數(單位us)。
數學函數
- min(x, y) 求最小值
- max(x, y) 求最大值
- abs(x) 計算絕對值
- constrain(x, a, b) 約束函數,下限a,上限b,x必須在ab之間才能返回。
- map(value, fromLow, fromHigh, toLow, toHigh) 約束函數,value必須在fromLow與toLow之間和fromHigh與toHigh之間。
- pow(base, exponent) 開方函數,base的exponent次方。
- sq(x) 平方
- sqrt(x) 開根號
三角函數
- sin(rad)
- cos(rad)
- tan(rad)
隨機數函數
- randomSeed(seed) 隨機數端口定義函數,seed表示讀模擬口analogRead(pin)函數 。
- long random(max) 隨機數函數,返回數據大於等於0,小於max。
- long random(min, max) 隨機數函數,返回數據大於等於min,小於max。
外部中斷函數
- attachInterrupt(interrupt, , mode) 外部中斷只能用到數字IO口2和3,interrupt表示中斷口初始0或1,表示一個功能函數,mode:LOW低電平中斷,CHANGE有變化就中斷,RISING上升沿中斷,FALLING 降低沿中斷。
- detachInterrupt(interrupt) 中斷開關,interrupt=1 開,interrupt=0 關。
中斷使能函數
- interrupts() 使能中斷
- noInterrupts() 禁止中斷
串口收發函數
- Serial.begin(speed) 串口定義波特率函數,speed表示波特率,如9600,19200等。
- int Serial.available() 判斷緩衝器狀態。
- int Serial.read() 讀串口並返回收到參數。
- Serial.flush() 清空緩衝器。
- Serial.print(data) 串口輸出數據。
- Serial.println(data) 串口輸出數據並帶回車符。
官方庫文件
- EEPROM - EEPROM讀寫程序庫
- Ethernet - 以太網控制器程序庫
- LiquidCrystal - LCD控制程序庫
- Servo - 舵機控制程序庫
- SoftwareSerial - 任何數字IO口模擬串口程序庫
- Stepper - 步進電機控制程序庫
- Wire - TWI/I2C總線程序庫
- Matrix - LED矩陣控制程序庫
- Sprite - LED矩陣圖象處理控制程序庫
非官方庫文件
- DateTime - a library for keeping track of the current date and time in software.
- Debounce - for reading noisy digital inputs (e.g. from buttons)
- Firmata - for communicating with applications on the computer using a standard serial protocol.
- GLCD - graphics routines for LCD based on the KS0108 or equivalent chipset.
- LCD - control LCDs (using 8 data lines)
- LCD 4 Bit - control LCDs (using 4 data lines)
- LedControl - for controlling LED matrices or seven-segment displays with a MAX7221 or MAX7219.
- LedControl - an alternative to the Matrix library for driving multiple LEDs with Maxim chips.
- Messenger - for processing text-based messages from the computer
- Metro - help you time actions at regular intervals
- MsTimer2 - uses the timer 2 interrupt to trigger an action every N milliseconds.
- OneWire - control devices (from Dallas Semiconductor) that use the One Wire protocol.
- PS2Keyboard - read characters from a PS2 keyboard.
- Servo - provides software support for Servo motors on any pins.
- Servotimer1 - provides hardware support for Servo motors on pins 9 and 10
- Simple Message System - send messages between Arduino and the computer
- SSerial2Mobile - send text messages or emails using a cell phone (via AT commands over software serial)
- TextString - handle strings
- TLC5940 - 16 channel 12 bit PWM controller.
- X10 - Sending X10 signals over AC power lines
以上庫文件都須要下載到編譯環境(以下目錄:arduino-0022\hardware\libraries)中才能使用。