Arduino语法手册函数部分摘自:=arduino:arduino_language_reference函数部分数字I/OpinMode()描述将指定的引脚配置成输出或输入。详情请见digitalpins。语法pinMode(pin,mode)参数pin:要设置模式的引脚mode:INPUT或OUTPUT返回无例子ledPin=13//LED连接到数字脚13voidsetup(){pinMode(ledPin,OUTPUT);//设置数字脚为输出}voidloop(){digitalWrite(ledPin,HIGH);//点亮LEDdelay(1000);//等待一秒digitalWrite(ledPin,LOW);//灭掉LED延迟(1000);//等待第二个}注意模拟输入脚也能当做数字脚使用,参加A0,A1,等digitalWrite()描述给一个数字引脚写入HIGH或者LOW。如果一个引脚已经使用pinMode()配置为OUTPUT模式,其电压将被设置为相应的值,HIGH为5V(3.3V控制板上为3.3V),LOW为0V。如果引脚配置为INPUT模式,使用digitalWrite()写入HIGH值,将使内部20K上拉电阻(详见数字引脚教程)。写入LOW将会禁用上拉。上拉电阻可以点亮一个LED让其微微亮,如果LED工作,但是亮度很低,可能是因为这个原因引起的。补救的办法是使用pinMode()函数设置为输出引脚。注意:数字13号引脚难以作为数字输入使用,因为大部分的控制板上使用了一颗LED与一个电阻连接到他。如果启动了内部的20K上拉电阻,他的电压将在1.7V左右,而不是正常的5V,因为板载LED串联的电阻把他使他降了下来,这意味着他返回的值总是LOW。如果必须使用数字13号引脚的输入模式,需要使用外部上拉下拉电阻。语法digitalWrite(pin,value)参数pin:引脚编号(如1,5,10,A0,A3)value:HIGHorLOW返回无例子intledPin=13;//LED连接到数字13号端口voidsetup(){pinMode(ledPin,OUTPUT);//设置数字端口为输入模式}voidloop(){digitalWrite(ledPin,HIGH);//使LED亮delay(1000);//延迟一秒digitalWrite(ledPin,LOW);//使LED灭delay(1000);//延迟一秒}13号端口设置为高电平,延迟一秒,然后设置为低电平。注释模拟引脚也可以当做数字引脚使用,使用方法是输入端口A0,A1,A2等。digitalRead()描述读取指定引脚的值,HIGH或LOW。语法digitalRead(PIN)参数pin:你想读取的引脚号(int)返回HIGH或LOW例子ledPin=13//LED连接到13脚intinPin=7;//按钮连接到数字引脚7intval=0;//定义变量以存储读值voidsetup(){pinMode(ledPin,OUTPUT);//将13脚设置为输出pinMode(inPin,INPUT);//将7脚设置为输入}voidloop(){val=digitalRead(inPin);//读取输入脚digitalWrite(ledPin,val);//将LED值设置为按钮的值}将13脚设置为输入脚7脚的值。注意如果引脚悬空,digitalRead()会返回HIGH或LOW(随机变化)。模拟输入脚能当做数字脚使用,参见A0,A1等。模拟I/OanalogReference()描述配置用于模拟输入的基准电压(即输入范围的最大值)。选项有:DEFAULT:默认5V(Arduino板为5V)或3.3伏特(Arduino板为3.3V)为基准电压。INTERNAL:在ATmega168和ATmega328上以1.1V为基准电压,以及在ATmega8上以2.56V为基准电压(ArduinoMega无此选项)INTERNAL1V1:以1.1V为基准电压(此选项仅针对ArduinoMega)INTERNAL2V56:以2.56V为基准电压(此选项仅针对ArduinoMega)EXTERNAL:以AREF引脚(0至5V)的电压作为基准电压。参数type:使用哪种参考类型(DEFAULT,INTERNAL,INTERNAL1V1,INTERNAL2V56,或者EXTERNAL)。返回无注意事项改变基准电压后,之前从analogRead()读取的数据可能不准确。警告不要在AREF引脚上使用使用任何小于0V或超过5V的外部电压。如果你使用AREF引脚上的电压作为基准电压,你在调用analogRead()前必须设置参考类型为EXTERNAL。否则,你将会削短有效的基准电压(内部产生)和AREF引脚,这可能会损坏您Arduino板上的单片机。另外,您可以在外部基准电压和AREF引脚之间连接一个5K电阻,使你可以在外部和内部基准电压之间切换。请注意,总阻值将会发生改变,因为AREF引脚内部有一个32K电阻。这两个电阻都有分压作用。所以,例如,如果输入2.5V的电压,最终在在AREF引脚上的电压将为2.5*32/(32+5)=2.2V。analogRead()描述从指定的模拟引脚读取数据值。Arduino板包含一个6通道(Mini和Nano有8个通道,Mega有16个通道),10位模拟数字转换器。这意味着它将0至5伏特之间的输入电压映射到0至1023之间的整数值。这将产生读数之间的关系:5伏特/1024单位,或0.0049伏特(4.9mV)每单位。输入范围和精度可以使用analogReference()改变。它需要大约100微秒(0.0001)来读取模拟输入,所以最大的阅读速度是每秒10000次。语法analogRead(PIN)数值的读取引脚:从输入引脚(大部分板子从0到5,Mini和Nano从0到7,Mega从0到15)读取数值返回从0到1023的整数值注意事项如果模拟输入引脚没有连入电路,由analogRead()返回的值将根据多项因素(例如其他模拟输入引脚,你的手靠近板子等)产生波动。例子intanalogPin=3;//电位器(中间的引脚)连接到模拟输入引脚3//另外两个引脚分别接地和+5Vintval=0;//定义变量来存储读取的数值voidsetup(){serial.begin(9600);//设置波特率(9600)}voidloop(){val=analogRead(analogPin);//从输入引脚读取数值serial.println(val);//显示读取的数值}返回主菜单analogWrite()-PWM描述从一个引脚输出模拟值(PWM)。可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。PWM信号的频率大约是490赫兹。在大多数arduino板(ATmega168或ATmega328),只有引脚3,5,6,9,10和11可以实现该功能。在aduinoMega上,引脚2到13可以实现该功能。老的Arduino板(ATmega8)的只有引脚9、10、11可以使用analogWrite()。在使用analogWrite()前,你不需要调用pinMode()来设置引脚为输出引脚。analogWrite函数与模拟引脚、analogRead函数没有直接关系。语法analogWrite(pin,value)参数pin:用于输入数值的引脚。value:占空比:0(完全关闭)到255(完全打开)之间。返回无说明和已知问题引脚5和6的PWM输出将高于预期的占空比(输出的数值偏高)。这是因为millis()和delay()功能,和PWM输出共享相同的内部定时器。这将导致大多时候处于低占空比状态(如:0-10),并可能导致在数值为0时,没有完全关闭引脚5和6。例子通过读取电位器的阻值控制LED的亮度intledPin=9;//LED连接到数字引脚9intanalogPin=3;//电位器连接到模拟引脚3intval=0;//定义变量存以储读值voidsetup(){pinMode(ledPin,OUTPUT);//设置引脚为输出引脚}voidloop(){val=analogRead(analogPin);//从输入引脚读取数值analogWrite(ledPin,val/4);//以val/4的数值点亮LED(因为analogRead读取的数值从0到1023,而analogWrite输出的数值从0到255)}高级I/Otone()tone()描述在一个引脚上产生一个特定频率的方波(50%占空比)。持续时间可以设定,否则波形会一直产生直到调用noTone()函数。该引脚可以连接压电蜂鸣器或其他喇叭播放声音。在同一时刻只能产生一个声音。如果一个引脚已经在播放音乐,那调用tone()将不会有任何效果。如果音乐在同一个引脚上播放,它会自动调整频率。使用tone()函数会与3脚和11脚的PWM产生干扰(Mega板除外)。注意:如果你要在多个引脚上产生不同的音调,你要在对下一个引脚使用tone()函数前对此引脚调用noTone()函数。语法tone(pin,frequency)tone(pin,frequency,duration)参数pin:要产生声音的引脚frequency:产生声音的频率,单位Hz,类型unsignedintduration:声音持续的时间,单位毫秒(可选),类型unsignedlong返回无noTone()描述停止由tone()产生的方波。如果没有使用tone()将不会有效果。注意:如果你想在多个引脚上产生不同的声音,你要在对下个引脚使用tone()前对刚才的引脚调用noTone().语法noTone(pin)参数pin:所要停止产生声音的引脚返回无shiftOut()shiftOut()描述将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin,LOW)。注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。语法shiftOut(dataPin,clockPin,bitOrder,value)参数dataPin:输出每一位数据的引脚(int)clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)bitOrder:输出位的顺序,最高位优先或最低位优先value:要移位输出的数据(byte)返回无shiftIn()描述将一个数据的一个字节一位一位的移入。从最高有效位(最左边)或最低有效位(最右边)开始。对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。语法shiftIn(dataPin,clockPin,bitOrder)参数dataPin:输出每一位数据的引脚(int)clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)bitOrder:输出位的顺序,最高位优先或最低位优先返回读取的值(byte)pulseIn()描述读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。此函数的计时