常量

HIGH| LOW
INPUT | OUTPUT | INPUT_PULLUP
LED_BUILTIN
true | false
constants是在Arduino语言里预定义的变量。它们被用来使程序更易阅读。我们按组将常量分类。

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

在ARDUINO语言中有两个常量用来代表真或假:true 和 false 。

false

表示与 true 相反的唯一布尔值。当自动数据类型指定将 false 转换为数字时,它变为0(零);将 false 转换为字符串时,它变为 “false” 。

true

表示与 false相反的唯一布尔值。当自动数据类型指定将 true 转换为数字时,它变为1(一);将 true 转换为字符串时,它变为 “true” 。

true 和 false是键盘的小写键入,HIGH, LOW, INPUT, & OUTPUT是键盘的大写键入。

定义引脚的电平状态:HIGH和LOW

读取或写入数字引脚只有两种可能的值被采取/被设定:HIGH和LOW。

HIGH

HIGH(参考引脚)的含义取决于引脚'pin'的设置,引脚定义为'INPUT'或'OUTPUT'时含义有所不同。当一个引脚通过'pinMode'被设置为'INPUT',并通过digitalRead读取(read)时。如果当前引脚的电压大于等于3V,MUC将会返回为'HIGH'。 引脚也可以通过pinMode被设置为INPUT,并通过'digitalWrite'设置为'HIGH'。输入引脚的值将被一个内在的20K上拉电阻 控制 在'HIGH'上,除非一个外部电路将其拉低到'LOW'。 当一个引脚通过'pinMode'被设置为'OUTPUT',并'digitalWrite'设置为'HIGH'时,引脚的电压应在5V。在这种状态下,它可以 输出电流 。例如,点亮一个通过一串电阻接地或设置为'LOW'的'OUTPUT'属性引脚的LED。

LOW

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

数字引脚定义:INPUT 和OUTPUT

数字引脚可以作为'INPUT'或'OUTPUT'。用'pinMode()'方法使一个数字引脚从'INPUT'到'OUTPUT'变化

引脚配置为'INPUT'

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

引脚配置为'OUTPUT'

引脚通过'pinMode()'配置为输出'OUTPUT'即是将其配置在一个低电平的状态。这意味着它们可以为电路提供充足的电流。Atmega引脚可以向其他设备/电路提供(提供正电流positive current)或倒灌(提供负电流negative current)达40毫安(mA)的电流。这使得它们利于给LED供电,而不是读取传感器。输出'OUTPUT'引脚被短路的接地或5V电路上会受到损坏甚至烧毁。Atmega引脚在为继电器或电机供电时,由于电流不足,将需要一些外接电路来实现供电。
数字引脚13脚一般不用做输入模式,因为它串联了一个LED和电阻,如果你使能了内部的20K上拉电阻,它的电压将会在1.7V左右而不是你所期望的5V。因为它串联的LED和电阻把电压拉低了,这也就意味着13脚始终读出的是LOW,如果你一定要把13脚用为输入脚,请给它接一个外部的下拉电阻。

整数常量

整型常量是直接在草图中使用的号码,如123。默认情况下,这些数字被视为整型的,但你可以用U和L修饰符改变这种(见下文)

进制 例子 格式 备注
10 (decimal) 123 none
2 (binary) B1111011 前缀 'B' 只适用于8位的值(0到255)字符0-1有效
8 (octal) 0173 前缀 “0” 字符0-7有效
16 (hexadecimal)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。

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

浮点常量

与整数常量类似,浮点常量使代码更具有可读性。
浮点常量也可以表现在各种科学记数法。'E' 或 'e'都是有效的指数指标。

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