常量
在Arduino语言中Constants 是预定义的变量。他们是用来使程序易于阅读。我们按组将常量进行分类:
逻辑层定义: true 与 false (Boolean 布尔型常量)
在Arduino语言里有两个常量被用于表示真和假: true,与false。
false
在这两个常量中 false 更容易被定义。false 被定义为 0 。
true
true通常被定义为1,这个正确的,但其实 true 具有更广泛的定义。在布尔含义(Boolean sense)里任何非零整数都为 true,所以像-1,2,或者200都被定义为 true。
注意 true 和 false 常量不同于 HIGH, LOW, INPUT 和 OUTPUT 需要小写。
引脚电压定义: HIGH 与 LOW
当对数字引脚读或者写操作时只有两个可能的值:HIGH和LOW。
HIGH
HIGH(参考引脚)的含义有所不同,取决于引脚(pin)设置为 INPUT 还是 OUTPUT。当一个引脚通过pinMode()被设置为 INPUT,并使用digitalRead()函数读取引脚时,在以下情况中,Arduino控制器将返回 HIGH:
- - 引脚电压大于3V(5V板)
- - 引脚电压大于2V(3.3V板)
引脚也可以通过 pinMode()设置为 INPUT,然后使用digitalWrite() 设置为HIGH。这将使能内部20K上拉电阻并将这个输入引脚控制为HIGH状态,除非有外部拉低电路。这是INPUT_PULLUP如何工作及更详细的描述如。
当引脚通过pinMode()设置为OUTPUT,通过digitalWrite()设置为HIGH时,该引脚状态:
- - 5 V (5V boards);
- - 3.3 V (3.3V boards);
在这种状态下它可以输出电流,例如:点亮一个通过串联电阻连接到GND的LED。
LOW
LOW(参考引脚)的含义也有所不同,同样取决于引脚(pin)设置为 INPUT 还是 OUTPUT。当一个引脚通过pinMode()被设置为 INPUT,并使用digitalRead()函数读取引脚时,在以下情况中,Arduino控制器将返回 LOW:
- - 引脚电压低于3V(5V板)
- - 引脚电压低于2V(3.3V板)
当一个引脚通过pinMode()被设置为 OUTPUT,并使用digitalWrite()函数设置为 LOW状态时,该引脚电压为0V(5V板和3.3V板相同)。在这种状态下它可以反向电流,例如:点亮一个通过串联电阻连接到+5V(或者+3.3V)的LED。
Defining Digital Pins modes: INPUT, INPUT_PULLUP, and OUTPUT
数字引脚可以被用做 INPUT,INPUT_PULLUP或OUTPUT。通过pinMode()改变一个数字引脚使用状态(在3者中切换)。
引脚配置为INPUT
Arduino(Atmega)引脚通过pinMode()配置为 输入(INPUT) 即是将其配置在一个高阻抗的状态。引脚配置为INPUT 使引脚进行取样时对电路要求非常小,相在引脚前当于串联一个100M欧电阻。这使得他们更利于读取一个传感器。
如果你配置你的引脚为INPUT,并读取一个开关状态,当开关处于打开状态时输入引脚将是“浮动的”,并导致不可预知的结果。为了保证当开关打开状态能读到一个确切的状态,必须使用上拉或者下拉电阻。这个电阻的目的是当开关打开时,引脚处于一个已知状态。通常我们会选择10 K欧姆电阻,因为它阻值低确有效防止浮动输入,同时当开关关闭是,一个高阻值的电阻阻碍了电流流通。 有关更多信息,请参见教程:Digital Read Serial
如果使用一个下拉电阻,当开关打开时输入引脚将为低,当开关关闭为高。
如果使用一个上拉电阻,当开关打开时输入引脚将为高,当开关关闭为低。
引脚配置为INPUT_PULLUP
arduino上的单片机具有内部上拉电阻(电阻连接到电源内部)并且你可以使用。如果你倾向于使用它代替外部上拉电阻,可以使用pinMode()设置引脚为INPUT_PULLUP 。
详细可以参考使用例程:Input Pullup Serial
See the Input Pullup Serial tutorial for an example of this in use.
Pins configured as inputs with either INPUT or INPUT_PULLUP can be damaged or destroyed if they are connected to voltages below ground (negative voltages) or above the positive power rail (5V or 3V).
引脚配置为Outputs
Pins configured as OUTPUT with pinMode() are said to be in a low-impedance state. This means that they can provide a substantial amount of current to other circuits. Atmega pins can source (provide current) or sink (absorb current) up to 40 mA (milliamps) of current to other devices/circuits. This makes them useful for powering LEDs because LEDs typically use less than 40 mA. Loads greater than 40 mA (e.g. motors) will require a transistor or other interface circuitry.
Pins configured as outputs can be damaged or destroyed if they are connected to either the ground or positive power rails.
Defining built-ins: LED_BUILTIN
Most Arduino boards have a pin connected to an on-board LED in series with a resistor. The constant LED_BUILTIN is the number of the pin to which the on-board LED is connected. Most boards have this LED connected to digital pin 13.