最新消息:

Arduino语法-变量

Arduino 少儿编程 1792浏览 0评论
Arduino语法参考

语法列表

  • HIGH | LOW
  • INPUT | OUTPUT
  • true | false
  • 整型常量
  • 浮点数常量
  • 宏定义

变量说明

(本节转自极客工坊)

常量说明

constants是在Arduino语言里预定义的变量。它们被用来使程序更易阅读。我们按组将常量分类。

逻辑层定义,true与false(布尔Boolean常量)

在Arduino内有两个常量用来表示真和假:true和 false。

false

在这两个常量中false更容易被定义。false被定义为0(零)。

true

true通常被定义为1,这是正确的,但true具有更广泛的定义。在布尔含义(Boolean sense)里任何 非零 整数 为true。所以在布尔含义内-1,2和-200都定义为ture。 需要注意的是true和false常量,不同于HIGH,LOW,INPUT和OUTPUT,需要全部小写。

——这里引申一下题外话arduino是大小写敏感语言(case sensitive)。


HIGH 和 LOW说明

引脚电压定义,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

LOW的含义同样取决于引脚设置,引脚定义为INPUT或OUTPUT时含义有所不同。当一个引脚通过pinMode配置为INPUT,通过digitalRead设置为读取(read)时,如果当前引脚的电压小于等于2V,微控制器将返回为LOW。 当一个引脚通过pinMode配置为OUTPUT,并通过digitalWrite设置为LOW时,引脚为0V。在这种状态下,它可以 倒灌 电流。例如,点亮一个通过串联电阻连接到+5V,或到另一个引脚配置为OUTPUT、HIGH的的LED。


INPUT和OUTPUT说明

数字引脚(Digital pins)定义,INPUT和OUTPUT

数字引脚当作 INPUT 或 OUTPUT都可以 。用pinMode()方法使一个数字引脚从INPUT到OUTPUT变化。
引脚(Pins)配置为输入(Inputs)

Arduino(Atmega)引脚通过pinMode()配置为 输入(INPUT) 即是将其配置在一个高阻抗的状态。配置为INPUT的引脚可以理解为引脚取样时对电路有极小的需求,即等效于在引脚前串联一个100兆欧姆(Megohms)的电阻。这使得它们非常利于读取传感器,而不是为LED供电。

引脚(Pins)配置为输出(Outputs)

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

这意味着它们可以为电路提供充足的电流。Atmega引脚可以向其他设备/电路提供(提供正电流positive current)或倒灌(提供负电流negative current)达40毫安(mA)的电流。这使得它们利于给LED供电,而不是读取传感器。输出(OUTPUT)引脚被短路的接地或5V电路上会受到损坏甚至烧毁。Atmega引脚在为继电器或电机供电时,由于电流不足,将需要一些外接电路来实现供电。


整型常量说明

整数常量是直接在程序中使用的数字,如123。默认情况下,这些数字被视为int,但你可以通过U和L修饰符进行更多的限制(见下文)。 通常情况下,整数常量默认为十进制,但可以加上特殊前缀表示为其他进制。

进制 例子 格式 备注
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是有效的。

示例:

101  //和十进制5等价 (1*2^2 + 0*2^1 + 1*2^0)

二进制格式只能是8位的,即只能表示0-255之间的数。如果输入二进制数更方便的话,你可以用以下的方式:

myInt = (B11001100 * 256) + B10101010;    // B11001100 作为高位。

八进制是以8为基底,只有0-7是有效的字符。前缀“0”(数字0)表示该值为八进制。

0101    // 等同于十进制数65   ((1 * 8^2) + (0 * 8^1) + 1) 

警告:八进制数0前缀很可能无意产生很难发现的错误,因为你可能不小心在常量前加了个“0”,结果就悲剧了。

十六进制以16为基底,有效的字符为0-9和A-F。十六进制数用前缀“0x”(数字0,字母爱克斯)表示。请注意,A-F不区分大小写,就是说你也可以用a-f。

示例:

0x101   // 等同于十进制257   ((1 * 16^2) + (0 * 16^1) + 1)

U & L 格式

默认情况下,整型常量被视作int型。要将整型常量转换为其他类型时,请遵循以下规则:

- 'u' or 'U' 指定一个常量为无符号型。(只能表示正数和0) 例如: 33u
- 'l' or 'L' 指定一个常量为长整型。(表示数的范围更广) 例如: 100000L
- 'ul' or 'UL' 这个你懂的,就是上面两种类型,称作无符号长整型。 例如:32767ul 

浮点数常量说明

和整型常量类似,浮点常量可以使得代码更具可读性。浮点常量在编译时被转换为其表达式所取的值。 例子

n = .005; 浮点数可以用科学记数法表示。’E’和’e’都可以作为有效的指数标志。

浮点数 被转换为 被转换为
10.0 10
2.34E5 2.34 * 10^5 234000
67E-12 67.0 * 10^-12 0.000000000067


宏定义

#define     HIGH   0x1 //高电平
#define     LOW   0x0  //低电平
#define     INPUT   0x0 //输入
#define     OUTPUT   0x1 //输出
#define     true   0x1 //真
#define     false   0x0 //假
#define     PI   3.14159265 //PI.
#define     HALF_PI   1.57079 //二分之一PI
#define     TWO_PI   6.283185 //二倍PI
#define     DEG_TO_RAD   0.01745329 //弧度转角度
#define     RAD_TO_DEG   57.2957786 //角度转弧度

您必须 登录 才能发表评论!