常量
在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
引脚作为输入配置两者INPUT或INPUT_PULLUP任何一个都可以被损坏或摧毁了,如果连接了负电压或高电压(5 v或3 v)。
引脚配置为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
大多数Arduino电路板都有一个引脚通过串联电阻连接板载LED。常量LED_BUILTIN 为该引脚的引脚号。大多数板子的板载led都是连接到数字引脚13的。