Arduino参考手册.docx
《Arduino参考手册.docx》由会员分享,可在线阅读,更多相关《Arduino参考手册.docx(15页珍藏版)》请在冰豆网上搜索。
Arduino参考手册
Arduino参考手册
Arduino开发语言提供全部的C语言特性和C++语言的部分特性.通过链接到AVR的libc库online~,可以使用库中提供的函数.具体的应用细节请参考相关文档.
程序结构
在Arduino中,标准的程序入口main函数在内部被定义,用户只需要关心以下两个函数:
∙voidsetup()
∙voidloop()
setup()函数用于初始化,loop()函数用于执行.初始化函数一般放在程序开头,用于设置一些引脚的输出/输入模式,初始化串口通讯等类似工作.loop()函数中的代码将被循环执行,例如:
读入引脚状态,设置引脚输出状态等.
控制语句
∙if
∙if...else
∙for
∙switch
∙while
∙do...while
∙break
∙continue
∙return
∙goto
相关语法
∙;(分号)
∙{}(大括号)
∙//(单行注释)
∙/**/(多行注释)
∙#define
∙#include
算术运算符
∙=(赋值)
∙+(加)
∙-(减)
∙*(乘)
∙/(除)
∙%(取模)
比较运算符
∙==(等于)
∙!
=(不等于)
∙<(小于)
∙>(大于)
∙<=(小于等于)
∙>=(大于等于)
布尔运算符
∙&&(逻辑与)
∙||(逻辑或)
∙!
(逻辑非)
指针运算符
∙*指针运算符
∙&地址运算符
位运算
∙&(位与)
∙|(位或)
∙^(位异或)
∙~(位非)
∙<<(左移)
∙>>(右移)
∙端口操作
复合运算符
∙++(自加)
∙--(自减)
∙+=(复合加)
∙-=(复合减)
∙*=(复合乘)
∙/=(复合除)
∙&=(复合与)
∙|=(复合或)
变量
常量
∙HIGH|LOW
∙INPUT|OUTPUT
∙true|false
∙整数常量
∙浮点数常量
数据类型
∙void(无类型)
∙boolean(布尔型)
∙char(字符型)
∙unsignedchar(无符号字符型)
∙byte(字节型)
∙int(整型)
∙unsignedint(无符号整型)
∙long(长整型)
∙unsignedlong(无符号长整型)
∙float(单精度)
∙double(双精度)
∙string(字符串)
∙array(数组)
数据类型转换
∙char()
∙byte()
∙int()
∙word()
∙long()
∙float()
变量作用域&修饰符
∙变量作用域
∙static(静态变量)
∙volatile(易变变量)
∙const(不可改变变量)
辅助工具
∙sizeof()(sizeof运算符)
∙ASCII码表
基本函数
数字I/O
∙pinMode(pin,mode)
∙digitalWrite(pin,value)
∙digitalRead(pin)
模拟I/O
∙analogReference(type)
∙analogRead(pin)
∙analogWrite(pin,value)-PWM
高级I/O
∙shiftOut(dataPin,clockPin,bitOrder,val)
∙pulseIn(pin,state,timeout)
时间
∙millis()
∙delay(ms)
∙delayMicroseconds(us)
数学库
∙min(x,y)
∙max(x,y)
∙abs(x)
∙constrain(x,a,b)
∙map(x,in_min,in_max,out_min,out_max)
∙pow(base,exponent)
∙sqrt(x)
三角函数
∙sin(rad)
∙cos(rad)
∙tan(rad)
随机数
∙randomSeed(seed)
∙random(howbig)
∙random(howsmall,howbig)
位操作
∙lowByte()
∙highByte()
∙bitRead()
∙bitWrite()
∙bitSet()
∙bitClear()
∙bit()
设置中断函数
∙attachInterrupt(interrupt,function,mode)
∙detachInterrupt(interrupt)
开关中断
∙interrupts()
∙noInterrupts()
串口通讯
∙Serial.begin(speed)
∙Serial.available()
∙Serial.read()
∙Serial.flush()
∙Serial.print(data)
∙Serial.println(data)
扩展库
如果要使用一些已有的库,可以选择菜单"Sketch->ImportLibrary",然后选择相应的库.Sketch工具会自己在代码的开头包含库的头文件(#include).
在引入库之后,程序的体积也将会增大(因为包含了库的代码).对于不是必要的库,直接删除对应的#include语句就可以了.
官方扩展库
以下是Arduino官方提供的扩展库,被默认包含在开发工具中.
∙EEPROM-读写EEPROM存储区.
∙Ethernet-以太网支持.
∙Firmata-基于串口的通讯协议.
∙LiquidCrystal-LCD液晶显示.
∙Servo-伺服电机.
∙SoftwareSerial-软件实现的串口,可以选择任意引脚.
∙Stepper-步进电机.
∙Wire-I2C协议支持.
∙Matrix-LED显示阵列控制.
∙Sprite-LED显示阵列中子块控制.
第三方扩展库
这里只包含了Roboduino扩展板的相关库,其他的库信息请访问:
Arduino在线文档online~.
Roboduino扩展板:
∙RoboduinoMotor-Roboduino电机扩展板驱动.
如果需要设计自己的库,请参考"arduino\hardware\libraries"目录中相关库的代码.
============================================================================================================================================
Arduino语言注解
wxxmickey发表于-2008-11-2318:
59:
00
Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不了解AVR单片机(微控制器)的朋友也能轻松上手。
在与ArduinoDIYER接触的这段时间里,发现有些朋友对Arduino语言还是比较难入手,那么这里我就简单的注释一下Arduino语言(本人也是半罐子水,有错的地方还请各位指正)。
/*************基础C语言*************/
关键字:
∙if
∙if...else
∙for
∙switchcase
∙while
∙do...while
∙break
∙continue
∙return
∙goto
语法符号:
∙;
∙{}
∙//
∙/**/
运算符:
∙=
∙+
∙-
∙*
∙/
∙%
∙==
∙!
=
∙<
∙>
∙<=
∙>=
∙&&
∙||
∙!
∙++
∙--
∙+=
∙-=
∙*=
∙/=
数据类型:
∙boolean布尔类型
∙char
∙byte字节类型
∙int
∙unsignedint
∙long
∙unsignedlong
∙float
∙double
∙string
∙array
∙void
数据类型转换:
∙char()
∙byte()
∙int()
∙long()
∙float()
常量:
∙HIGH|LOW表示数字IO口的电平,HIGH表示高电平
(1),LOW表示低电平(0)。
∙INPUT|OUTPUT表示数字IO口的方向,INPUT表示输入(高阻态),OUTPUT表示输出(AVR能提供5V电压40mA电流)。
∙true|falsetrue表示真
(1),false表示假(0)。
/******************************************/
以上为基础c语言的关键字和符号,有c语言基础的都应该了解其含义,这里也不作过多的解释。
/*************Arduino语言*************/
结构
∙voidsetup()初始化变量,管脚模式,调用库函数等
∙voidloop()连续执行函数内的语句
功能
数字I/O
∙pinMode(pin,mode)数字IO口输入输出模式定义函数,pin表示为0~13,mode表示为INPUT或OUTPUT。
∙digitalWrite(pin,value)数字IO口输出电平定义函数,pin表示为0~13,value表示为HIGH或LOW。
比如定义HIGH可以驱动LED。
∙intdigitalRead(pin)数字IO口读输入电平函数,pin表示为0~13,value表示为HIGH或LOW。
比如可以读数字传感器。
模拟I/O
∙intanalogRead(pin)模拟IO口读函数,pin表示为0~5(ArduinoDiecimila为0~5,Arduinonano为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的使能控制。
∙unsignedlongpulseIn(pin,value)脉冲长度记录函数,返回时间参数(us),pin表示为0~13,value为HIGH或LOW。
比如value为HIGH,那么当pin输入为高电平时,开始计时,当pin输入为低电平时,停止计时,然后返回该时间。
时间函数
∙unsignedlongmillis()返回时间函数(单位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)函数。
∙longrandom(max)随机数函数,返回数据大于等于0,小于max。
∙longrandom(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等。
∙intSerial.available()判断缓冲器状态。
∙intSerial.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-alibraryforkeepingtrackofthecurrentdateandtimeinsoftware.
∙Debounce-forreadingnoisydigitalinputs(e.g.frombuttons)
∙Firmata-forcommunicatingwithapplicationsonthecomputerusingastandardserialprotocol.
∙GLCD-graphicsroutinesforLCDbasedontheKS0108orequivalentchipset.
∙LCD-controlLCDs(using8datalines)
∙LCD4Bit-controlLCDs(using4datalines)
∙LedControl-forcontrollingLEDmatricesorseven-segmentdisplayswithaMAX7221orMAX7219.
∙LedControl-analternativetotheMatrixlibraryfordrivingmultipleLEDswithMaximchips.
∙Messenger-forprocessingtext-basedmessagesfromthecomputer
∙Metro-helpyoutimeactionsatregularintervals
∙MsTimer2-usesthetimer2interrupttotriggeranactioneveryNmilliseconds.
∙OneWire-controldevices(fromDallasSemiconductor)thatusetheOneWireprotocol.
∙PS2Keyboard-readcharactersfromaPS2keyboard.
∙Servo-providessoftwaresupportforServomotorsonanypins.
∙Servotimer1-provideshardwaresupportforServomotorsonpins9and10
∙SimpleMessageSystem-sendmessagesbetweenArduinoandthecomputer
∙SSerial2Mobile-sendtextmessagesoremailsusingacellphone(viaATcommandsoversoftwareserial)
∙TextString-handlestrings
∙TLC5940-16channel12bitPWMcontroller.
∙X10-SendingX10signalsoverACpowerlines
********************************************************************************
日期/时间-一个库追踪当前的日期和时间在软件。
Debounce-喧闹的数字输入阅读(例如,从按钮)
Firmata-负责应用电脑使用一个标准的串行协议。
GLCD-图形程序适用于液晶基于KS0108或同等芯片组。
LCD—控制液晶显示器(使用8数据线)
4比特—控制LCD液晶显示器(使用4个数据线)
LedControl-控制LED矩阵与MAX7221或seven-segment显示或MAX7219。
LedControl-可替代的矩阵库led芯片驱动多准则。
信使——加工文本消息的电脑
地铁-帮助你的时间间隔的行动
MsTimer2-使用定时器2中断触发一个行动所有N毫秒。
OneWire—控制设备(来自达拉斯的半导体)用一条线协议。
PS2Keyboard人物,仔细阅读PS2键盘。
伺服-提供软件支持伺服电机在任何密码。
Servotimer1-提供硬件支持伺服电机在大头针9和10
简单的信息系统之间的消息-发送Arduino和电脑
SSerial2Mobile-发送短信或电子邮件使用手机(以命令对软件系列)
TextString-处理字符串
TLC5940-16通道12位PWM控制器。
艺术馆发送信号——艺术馆交流输电线路
/****************************************/