Arduino語言是建立在C/C++基礎上的,其實也就是基礎的C語言,Arduino語言只不過把AVR單片機(微控制器)相關的一些參數設置都函數化,不用我們去了解他的底層,讓我們不了解AVR單片機(微控制器)的朋友也能輕松上手。
在與Arduino DIYER接觸的這段時間里,發現有些朋友對Arduino語言還是比較難入手,那么這里我就簡單的注釋一下Arduino語言(本人也是半罐子水,有錯的地方還請各位指正)。
/*************基礎C語言*************/
關鍵字:
語法符號:
運算符:
數據類型:
數據類型轉換:
常量:
- HIGH | LOW 表示數字IO口的電平,HIGH 表示高電平(1),LOW 表示低電平(0)。
- INPUT | OUTPUT 表示數字IO口的方向,INPUT 表示輸入(高阻態),OUTPUT 表示輸出(AVR能提供5V電壓 40mA電流)。
- true | false true 表示真(1),false表示假(0)。
/******************************************/
以上為基礎c語言的關鍵字和符號,有c語言基礎的都應該了解其含義,這里也不作過多的解釋。
/*************Arduino 語言*************/
結構
功能數字 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) 開根號
三角函數
隨機數函數
- 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) 串口輸出數據并帶回車符。
/**********************************/
/************Arduino語言庫文件*************/
官方庫文件
- 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-0011\hardware\libraries)中才能使用。