Arduino 语法手册09115.docx

上传人:b****7 文档编号:16083872 上传时间:2023-07-10 格式:DOCX 页数:35 大小:30.44KB
下载 相关 举报
Arduino 语法手册09115.docx_第1页
第1页 / 共35页
Arduino 语法手册09115.docx_第2页
第2页 / 共35页
Arduino 语法手册09115.docx_第3页
第3页 / 共35页
Arduino 语法手册09115.docx_第4页
第4页 / 共35页
Arduino 语法手册09115.docx_第5页
第5页 / 共35页
Arduino 语法手册09115.docx_第6页
第6页 / 共35页
Arduino 语法手册09115.docx_第7页
第7页 / 共35页
Arduino 语法手册09115.docx_第8页
第8页 / 共35页
Arduino 语法手册09115.docx_第9页
第9页 / 共35页
Arduino 语法手册09115.docx_第10页
第10页 / 共35页
Arduino 语法手册09115.docx_第11页
第11页 / 共35页
Arduino 语法手册09115.docx_第12页
第12页 / 共35页
Arduino 语法手册09115.docx_第13页
第13页 / 共35页
Arduino 语法手册09115.docx_第14页
第14页 / 共35页
Arduino 语法手册09115.docx_第15页
第15页 / 共35页
Arduino 语法手册09115.docx_第16页
第16页 / 共35页
Arduino 语法手册09115.docx_第17页
第17页 / 共35页
Arduino 语法手册09115.docx_第18页
第18页 / 共35页
Arduino 语法手册09115.docx_第19页
第19页 / 共35页
Arduino 语法手册09115.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Arduino 语法手册09115.docx

《Arduino 语法手册09115.docx》由会员分享,可在线阅读,更多相关《Arduino 语法手册09115.docx(35页珍藏版)》请在冰点文库上搜索。

Arduino 语法手册09115.docx

Arduino语法手册09115

#Arduino 语法  

  

setup()     初始化函数  

  

loop()      循环体函数  

  

控制语句类似于C  

//if        if。

.。

else       for     switch case     while       do。

.。

 while     break       continue        return      goto  

  

扩展语法类似于C  

//;(分号)     {}(花括号)     //(单行注释)        /* */(多行注释)     #define     #include  

  

算数运算符类似于C  

//=(赋值运算符)      +(加)        -(减)        *(乘)        /(除)        %(模)  

  

比较运算符类似于C  

//==(等于)        !

=(不等于)     <(小于)        〉(大于)        <=(小于等于)     〉=(大于等于)  

  

布尔运算符类似于C  

//&&(与)     ||(或)       !

(非)  

  

指针运算符类似于C  

//* 取消引用运算符     & 引用运算符  

  

位运算符类似于C  

    & (bitwise and)     | (bitwise or)      ^ (bitwise xor)     ~ (bitwise not)     << (bitshift left)        〉〉 (bitshift right)  

  

复合运算符类似于C  

    ++ (increment)      —- (decrement)      += (compound addition)      -= (compound subtraction)       *= (compound multiplication)        /= (compound division)      &= (compound bitwise and)       |= (compound bitwise or)  

  

常量  

constants 预定义的常量  

    BOOL    true false  

  

    引脚电压定义,HIGH和LOW【当读取(read)或写入(write)数字引脚时只有两个可能的值:

 HIGH 和 LOW 】  

    HIGH(参考引脚)的含义取决于引脚(pin)的设置,引脚定义为INPUT或OUTPUT时含义有所不同。

当一个引脚通过pinMode被设置为INPUT,并通过digitalRead读取(read)时。

如果当前引脚的电压大于等于3V,微控制器将会返回为HIGH。

 引脚也可以通过pinMode被设置为INPUT,并通过digitalWrite设置为HIGH。

输入引脚的值将被一个内在的20K上拉电阻 控制 在HIGH上,除非一个外部电路将其拉低到LOW. 当一个引脚通过pinMode被设置为OUTPUT,并digitalWrite设置为HIGH时,引脚的电压应在5V。

在这种状态下,它可以 输出电流 。

例如,点亮一个通过一串电阻接地或设置为LOW的OUTPUT属性引脚的LED。

  

    LOW的含义同样取决于引脚设置,引脚定义为INPUT或OUTPUT时含义有所不同。

当一个引脚通过pinMode配置为INPUT,通过digitalRead设置为读取(read)时,如果当前引脚的电压小于等于2V,微控制器将返回为LOW. 当一个引脚通过pinMode配置为OUTPUT,并通过digitalWrite设置为LOW时,引脚为0V.在这种状态下,它可以 倒灌 电流。

例如,点亮一个通过串联电阻连接到+5V,或到另一个引脚配置为OUTPUT、HIGH的的LED。

  

  

    数字引脚(Digital pins)定义,INPUT和OUTPUT【数字引脚当作 INPUT 或 OUTPUT都可以 。

用pinMode()方法使一个数字引脚从INPUT到OUTPUT变化】  

    Arduino(Atmega)引脚通过pinMode()配置为 输入(INPUT) 即是将其配置在一个高阻抗的状态。

配置为INPUT的引脚可以理解为引脚取样时对电路有极小的需求,即等效于在引脚前串联一个100兆欧姆(Megohms)的电阻。

这使得它们非常利于读取传感器,而不是为LED供电。

  

    引脚通过pinMode()配置为 输出(OUTPUT) 即是将其配置在一个低阻抗的状态.  

    这意味着它们可以为电路提供充足的电流。

Atmega引脚可以向其他设备/电路提供(提供正电流positive current)或倒灌(提供负电流negative current)达40毫安(mA)的电流。

这使得它们利于给LED供电,而不是读取传感器.输出(OUTPUT)引脚被短路的接地或5V电路上会受到损坏甚至烧毁。

Atmega引脚在为继电器或电机供电时,由于电流不足,将需要一些外接电路来实现供电.  

  

    整数常量  

    进制  例子  格式  备注  

    10(十进制) 123 无     

    2(二进制)  B1111011    前缀'B'   只适用于8位的值(0到255)字符0-1有效  

    8(八进制)  0173    前缀"0”   字符0—7有效  

    16(十六进制)    0x7B    前缀”0x”  字符0—9,A-F,A—F有效  

  

    小数是十进制数。

这是数学常识。

如果一个数没有特定的前缀,则默认为十进制.  

    二进制以2为基底,只有数字0和1是有效的。

  

  

    ’u' or 'U’ 指定一个常量为无符号型。

(只能表示正数和0) 例如:

 33u  

    'l’ or ’L' 指定一个常量为长整型。

(表示数的范围更广) 例如:

 100000L  

    ’ul' or 'UL' 这个你懂的,就是上面两种类型,称作无符号长整型。

 例如:

32767ul  

  

    浮点常量  

    浮点数 被转换为    被转换为  

    10。

0        10  

    2。

34E5  2。

34 * 10^5 234000  

    67E-12  67。

0 * 10^—12   0。

000000000067  

  

数据类型类似于C  

    void        boolean     char        unsigned char       byte        int     unsigned int        word  

    long        unsigned long       float       double      string - char array     String — object     array -(数组)  

  

数据类型转换类似于C  

    char()      byte()      int()       word()      long()      float()  

    word()  

    把一个值转换为word数据类型的值,或由两个字节创建一个字符.  

    word(x)   

    word(h, l)  

    参数  

    X:

任何类型的值   

    H:

高阶(最左边)字节   

    L:

低序(最右边)字节  

  

修饰符类似于C  

    static      volatile        const  

  

辅助工具  

    sizeof()  

  

数字 I/O  

    pinMode()  

    将指定的引脚配置成输出或输入【pinMode(pin, mode) pin:

要设置模式的引脚  mode:

INPUT或OUTPUT】  

    例子:

  

    ledPin = 13 // LED连接到数字脚13  

    void setup()  

    {  

        pinMode(ledPin,OUTPUT); //设置数字脚为输出  

    }  

    void loop()  

    {  

        digitalWrite(ledPin,HIGH); //点亮LED  

        delay(1000);                  // 等待一秒  

        digitalWrite(ledPin, LOW);    // 灭掉LED  

        delay(1000);  //等待第二个  

    }  

  

    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号引脚的输入模式,需要使用外部上拉下拉电阻。

  

  

    digitalRead()  

    digitalRead(PIN)【pin:

你想读取的引脚号(int),返回 HIGH 或 LOW】  

    例子:

  

    ledPin = 13 // LED连接到13脚  

    int inPin = 7;   // 按钮连接到数字引脚7  

    int val = 0;  //定义变量存以储读值  

    void setup()  

    {  

        pinMode(ledPin, OUTPUT);      // 将13脚设置为输出  

        pinMode(inPin, INPUT);      // 将7脚设置为输入  

    }  

    void loop()  

    {  

        val = digitalRead(inPin);   // 读取输入脚  

        digitalWrite(ledPin, val);    //将LED值设置为按钮的值  

    }  

  

模拟 I/O  

    analogReference()  

    analogReference(type)  

    配置用于模拟输入的基准电压(即输入范围的最大值).选项有:

  

    DEFAULT:

默认5V(Arduino板为5V)或3.3伏特(Arduino板为3。

3V)为基准电压。

  

    INTERNAL:

在ATmega168和ATmega328上以1。

1V为基准电压,以及在ATmega8上以2。

56V为基准电压(Arduino Mega无此选项)  

    INTERNAL1V1:

以1.1V为基准电压(此选项仅针对Arduino Mega)  

    INTERNAL2V56:

以2.56V为基准电压(此选项仅针对Arduino Mega)  

    EXTERNAL:

以AREF引脚(0至5V)的电压作为基准电压。

  

    type:

使用哪种参考类型(DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, 或者 EXTERNAL)  

    改变基准电压后,之前从anal?

?

ogRead()读取的数据可能不准确。

  

    不要在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。

9 mV)每单位。

输入范围和精度可以使用analogReference()改变。

 它需要大约100微秒(0。

0001)来读取模拟输入,所以最大的阅读速度是每秒10000次。

  

    analogRead(PIN)  

    引脚:

从输入引脚(大部分板子从0到5,Mini和Nano从0到7,Mega从0到15)读取数值,返回从0到1023的整数值  

    例子:

  

    int analogPin = 3;    //电位器(中间的引脚)连接到模拟输入引脚3  

                          //另外两个引脚分别接地和+5 V  

    int val = 0;  //定义变量来存储读取的数值  

    void setup()  

    {  

        serial。

begin(9600); //设置波特率(9600)  

    }  

    void loop()  

    {  

        val = analogRead(analogPin); //从输入引脚读取数值  

        serial.println(val); //显示读取的数值  

    }  

  

    analogWrite() - PWM  

    analogWrite(pin,value)  

    从一个引脚输出模拟值(PWM)。

可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。

analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。

PWM信号的频率大约是490赫兹.  

    在大多数arduino板(ATmega168或ATmega328),只有引脚3,5,6,9,10和11可以实现该功能.在aduino Mega上,引脚2到13可以实现该功能.老的Arduino板(ATmega8)的只有引脚9、10、11可以使用analogWrite()。

在使用analogWrite()前,你不需要调用pinMode()来设置引脚为输出引脚.  

    analogWrite函数与模拟引脚、analogRead函数没有直接关系。

  

    pin:

用于输入数值的引脚。

   

    value:

占空比:

0(完全关闭)到255(完全打开)之间.  

    例子:

  

    int ledPin = 9;  // LED连接到数字引脚9  

    int analogPin = 3;  //电位器连接到模拟引脚3  

    int val = 0;  //定义变量存以储读值  

    void setup()  

    {  

        pinMode(ledPin,OUTPUT);  //设置引脚为输出引脚  

    }  

    void loop()  

    {  

        val = analogRead(analogPin);  //从输入引脚读取数值  

        analogWrite(ledPin,val / 4);  // 以val / 4的数值点亮LED(因为analogRead读取的数值从0到1023,而analogWrite输出的数值从0到255)  

    }  

  

高级 I/O  

    tone()  

    在一个引脚上产生一个特定频率的方波(50%占空比)。

持续时间可以设定,否则波形会一直产生直到调用noTone()函数.该引脚可以连接压电蜂鸣器或其他喇叭播放声音.  

    在同一时刻只能产生一个声音.如果一个引脚已经在播放音乐,那调用tone()将不会有任何效果。

如果音乐在同一个引脚上播放,它会自动调整频率.  

    使用tone()函数会与3脚和11脚的PWM产生干扰(Mega板除外)。

  

    注意:

如果你要在多个引脚上产生不同的音调,你要在对下一个引脚使用tone()函数前对此引脚调用noTone()函数.  

    tone(pin, frequency)   

    tone(pin, frequency, duration)  

    pin:

要产生声音的引脚   

    frequency:

 产生声音的频率,单位Hz,类型unsigned int   

    duration:

声音持续的时间,单位毫秒(可选),类型unsigned long  

  

    noTone()  

    停止由tone()产生的方波。

如果没有使用tone()将不会有效果.  

    noTone(pin)  

    pin:

 所要停止产生声音的引脚  

  

    shiftOut()  

    将一个数据的一个字节一位一位的移出。

从最高有效位(最左边)或最低有效位(最右边)开始。

依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效.  

    注意:

如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。

  

    注意:

这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效.  

    shiftOut(dataPin, clockPin, bitOrder, value)  

    dataPin:

输出每一位数据的引脚(int)   

    clockPin:

时钟脚,当dataPin有值时此引脚电平变化(int)   

    bitOrder:

输出位的顺序,最高位优先或最低位优先   

    value:

 要移位输出的数据(byte)  

    dataPin和clockPin要用pinMode()配置为输出。

 shiftOut目前只能输出1个字节(8位),所以如果输出值大于255需要分两步。

  

    //最高有效位优先串行输出  

    int data= 500;  

    //移位输出高字节  

    shiftOut(dataPin, clock, MSBFIRST, (data 〉〉 8));    

    //移位输出低字节  

    shiftOut(data, clock, MSBFIRST, data);  

    //最低有效位优先串行输出  

    data = 500;  

    //移位输出低字节  

    shiftOut(dataPin, clock, LSBFIRST, data);    

    //移位输出高字节  

    shiftOut(dataPin, clock, LSBFIRST, (data 〉> 8));  

    例子:

  

    相应电路,查看tutorial on controlling a 74HC595 shift register  

    //引脚连接到74HC595的ST_CP  

    int latchPin = 8;  

    //引脚连接到74HC595的SH_CP  

    int clockPin = 12;  

    // //引脚连接到74HC595的DS  

    int dataPin = 11;  

    void setup() {  

    //设置引脚为输出  

        pinMode(latchPin, OUTPUT);  

        pinMode(clockPin, OUTPUT);  

        pinMode(dataPin, OUTPUT);  

    }  

    void loop() {  

        //向上计数程序  

        for(J = 0; J <256; J + +){  

            //传输数据的时候将latchPin拉低  

            digitalWrite(latchpin, LOW);  

            shiftOut(dataPin,clockPin,LSBFIRST,J);  

            //之后将latchPin拉高以告诉芯片  

            //它不需要再接受信息了  

            digitalWrite(latchpin, HIGH);  

            delay(1000);  

        }  

    }  

  

    shiftIn()  

    将一个数据的一个字节一位一位的移入。

从最高有效位(最左边)或最低有效位(最右边)开始.对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。

  

    注意:

这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效.  

    shiftIn(dataPin,clockPin,bitOrder)  

    dataPin:

输出每一位数据的引脚(int)   

    clockPin:

时钟脚,当dataPin有值时此引脚电平变化(int)   

    bitOrder:

输出位的顺序,最高位优先或最低位优先  

  

    pulseIn()  

    读取一个引脚的脉冲(HIGH或LOW)。

例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。

返回脉冲的长度,单位微秒。

如果在指定的时间内无脉冲函数返回.  

    此函数的计时功能由经验决定,长时间的脉冲计时可能会出错.计时范围从10微秒至3分钟

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2