Arduino語言是建立在C/C++基礎(chǔ)上的,其實(shí)也就是基礎(chǔ)的C語言,Arduino語言只不過把AVR單片機(jī)(微控制器)相關(guān)的一些參數(shù)設(shè)置都函數(shù)化,不用我們?nèi)チ私馑牡讓,讓我們不了解AVR單片機(jī)(微控制器)的朋友也能輕松上手。
在與Arduino DIYER接觸的這段時(shí)間里,發(fā)現(xiàn)有些朋友對(duì)Arduino語言還是比較難入手,那么這里我就簡(jiǎn)單的注釋一下Arduino語言(本人也是半罐子水,有錯(cuò)的地方還請(qǐng)各位指正)。
/*************基礎(chǔ)C語言*************/
關(guān)鍵字:
語法符號(hào):
運(yùn)算符:
數(shù)據(jù)類型:
數(shù)據(jù)類型轉(zhuǎn)換:
常量:
- HIGH | LOW 表示數(shù)字IO口的電平,HIGH 表示高電平(1),LOW 表示低電平(0)。
- INPUT | OUTPUT 表示數(shù)字IO口的方向,INPUT 表示輸入(高阻態(tài)),OUTPUT 表示輸出(AVR能提供5V電壓 40mA電流)。
- true | false true 表示真(1),false表示假(0)。
/******************************************/
以上為基礎(chǔ)c語言的關(guān)鍵字和符號(hào),有c語言基礎(chǔ)的都應(yīng)該了解其含義,這里也不作過多的解釋。
/*************Arduino 語言*************/
結(jié)構(gòu)
功能數(shù)字 I/O
- pinMode(pin, mode) 數(shù)字IO口輸入輸出模式定義函數(shù),pin表示為0~13, mode表示為INPUT或OUTPUT。
- digitalWrite(pin, value) 數(shù)字IO口輸出電平定義函數(shù),pin表示為0~13,value表示為HIGH或LOW。比如定義HIGH可以驅(qū)動(dòng)LED。
- int digitalRead(pin) 數(shù)字IO口讀輸入電平函數(shù),pin表示為0~13,value表示為HIGH或LOW。比如可以讀數(shù)字傳感器。
模擬 I/O
- int analogRead(pin) 模擬IO口讀函數(shù),pin表示為0~5(Arduino Diecimila為0~5,Arduino nano為0~7)。比如可以讀模擬傳感器(10位AD,0~5V表示為0~1023)。
- analogWrite(pin, value) - PWM 數(shù)字IO口PWM輸出函數(shù),Arduino數(shù)字IO口標(biāo)注了PWM的IO口可使用該函數(shù),pin表示3, 5, 6, 9, 10, 11,value表示為0~255。比如可用于電機(jī)PWM調(diào)速或音樂播放。
擴(kuò)展 I/O
- shiftOut(dataPin, clockPin, bitOrder, value) SPI外部IO擴(kuò)展函數(shù),通常使用帶SPI接口的74HC595做8個(gè)IO擴(kuò)展,dataPin為數(shù)據(jù)口,clockPin為時(shí)鐘口,bitOrder為數(shù)據(jù)傳輸方向(MSBFIRST高位在前,LSBFIRST低位在前),value表示所要傳送的數(shù)據(jù)(0~255),另外還需要一個(gè)IO口做74HC595的使能控制。
- unsigned long pulseIn(pin, value) 脈沖長度記錄函數(shù),返回時(shí)間參數(shù)(us),pin表示為0~13,value為HIGH或LOW。比如value為HIGH,那么當(dāng)pin輸入為高電平時(shí),開始計(jì)時(shí),當(dāng)pin輸入為低電平時(shí),停止計(jì)時(shí),然后返回該時(shí)間。
時(shí)間函數(shù)
- unsigned long millis() 返回時(shí)間函數(shù)(單位ms),該函數(shù)是指,當(dāng)程序運(yùn)行就開始計(jì)時(shí)并返回記錄的參數(shù),該參數(shù)溢出大概需要50天時(shí)間。
- delay(ms) 延時(shí)函數(shù)(單位ms)。
- delayMicroseconds(us) 延時(shí)函數(shù)(單位us)。
數(shù)學(xué)函數(shù)
- min(x, y) 求最小值
- max(x, y) 求最大值
- abs(x) 計(jì)算絕對(duì)值
- constrain(x, a, b) 約束函數(shù),下限a,上限b,x必須在ab之間才能返回。
- map(value, fromLow, fromHigh, toLow, toHigh) 約束函數(shù),value必須在fromLow與toLow之間和fromHigh與toHigh之間。
- pow(base, exponent) 開方函數(shù),base的exponent次方。
- sq(x) 平方
- sqrt(x) 開根號(hào)
三角函數(shù)
隨機(jī)數(shù)函數(shù)
- randomSeed(seed) 隨機(jī)數(shù)端口定義函數(shù),seed表示讀模擬口analogRead(pin)函數(shù) 。
- long random(max) 隨機(jī)數(shù)函數(shù),返回?cái)?shù)據(jù)大于等于0,小于max。
- long random(min, max) 隨機(jī)數(shù)函數(shù),返回?cái)?shù)據(jù)大于等于min,小于max。
外部中斷函數(shù)
- attachInterrupt(interrupt, , mode) 外部中斷只能用到數(shù)字IO口2和3,interrupt表示中斷口初始0或1,表示一個(gè)功能函數(shù),mode:LOW低電平中斷,CHANGE有變化就中斷,RISING上升沿中斷,FALLING 下降沿中斷。
- detachInterrupt(interrupt) 中斷開關(guān),interrupt=1 開,interrupt=0 關(guān)。
中斷使能函數(shù)
- interrupts() 使能中斷
- noInterrupts() 禁止中斷
串口收發(fā)函數(shù)
- Serial.begin(speed) 串口定義波特率函數(shù),speed表示波特率,如9600,19200等。
- int Serial.available() 判斷緩沖器狀態(tài)。
- int Serial.read() 讀串口并返回收到參數(shù)。
- Serial.flush() 清空緩沖器。
- Serial.print(data) 串口輸出數(shù)據(jù)。
- Serial.println(data) 串口輸出數(shù)據(jù)并帶回車符。
/**********************************/
/************Arduino語言庫文件*************/
官方庫文件
- EEPROM - EEPROM讀寫程序庫
- Ethernet - 以太網(wǎng)控制器程序庫
- LiquidCrystal - LCD控制程序庫
- Servo - 舵機(jī)控制程序庫
- SoftwareSerial - 任何數(shù)字IO口模擬串口程序庫
- Stepper - 步進(jìn)電機(jī)控制程序庫
- 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
/****************************************/
以上庫文件都需要下載到編譯環(huán)境(如下目錄:arduino-0011\hardware\libraries)中才能使用。