本文为英译版,原文发表于deviceplus.jp。
虽然Devices Plus已经介绍过Arduino的多种应用程序和示例,但是了解相关基础知识对于任何项目的构建仍然是非常重要的!
这次,我们将介绍Arduino电子产品的基础知识。以编写Arduino入门书籍而闻名的福田和宏先生将作为本文的指导。
本文将介绍可以通过Arduino进行开启和关闭的数字输出的有关内容,并且说明如何创建使用LED的数字输出程序。
另外,为了使用电子部件,需要了解电气的有关术语,例如“电压”和“电流”。如果不理解这些术语的含义,您在购买电子元件的时候将无法确认其是否适用于您的用途。
[目录]
- • Arduino上的接口
- • “数字输出”的两种输出状态
- • 通过程序点亮LED
- • 程序结构
- • 需要了解的电气术语
- • 通过电阻控制电流
- • 将LED与电阻连接并点亮LED
Arduino上的接口
Arduino具有类似插孔的串联分布的端子,作为连接和控制电子组件的接口。这些接口可以实现多种控制功能,例如在这里连接一个LED或电机来对电子组件的运行进行控制,连接开关或类似的控件以进行打开/关闭的操作,或连接温度传感器来测量室温。
Arduino UNO的顶部有14个(0至13)“数字输入/输出”端子,右下方有6个(A0至A5)“模拟输入/输出”端子。
数字输入/输出端子的输出具有两种状态:“高电平状态”和“低电平状态”,以实现对电子组件的操作,并且可以检查电压状态。
而模拟输入是一个可以输入连续变化电压的端子。给每个端子分配一个数字编号,在通过程序控制电子组件时会指定其数字编号。
“数字输出”的两种输出状态
数字输出是一种可以更改程序中每个引脚状态的接口。您可以在两种状态之间进行切换:“高电平”或“低电平”。例如,如果连接LED且电压是高电平,那么LED将会被点亮。相反,如果是低电平,则LED会熄灭。
在Arduino中,当电压是高电平时,端子电压为“5V”,是低电平时,端子电压切换为“0V”。高电压状态被称为“高电平”,低电压状态被称为“低电平”。在程序中使用“HIGH”和“LOW”来分别指定高电平和低电平。数字输入和模拟输入将在本系列的后面部分内容中进行介绍。
通过程序点亮LED
我们通过用程序控制数字输出来打开LED。本节将介绍如何打开连接到第13个数字输入/输出端子的LED。按照以下步骤创建程序。创建程序后,像之前介绍的那样将其写入Arduino,然后检查LED是否被点亮。
const int LED_PIN = 13
void setup(){
pinMode( LED_PIN, OUTPUT );
}
void loop(){
digitalWrite( LED_PIN, HIGH );
}
view rawcode01.ino hosted with ❤ by GitHub
当对数字输出进行控制时,第4行和第8行的内容非常重要。数字输入/输出有两种方式:可以改变端子状态的“数字输出”以及可以读取端子状态的“数字输入”。因此,必须预先指定要使用的设置。该设置的内容就是第4行的“pinMode ()”。
pinMode( LED_PIN, OUTPUT );
在pinMode ()的括号中输入目标引脚编号以及模式。本项目中使用了第13个端子,所以目标端子编号为“13”,如果使用的是数字输出模式,则输入“OUTPUT”。但是,由于本项目中将端子编号设置为“LED_PIN”,所以将目标端子编号指定为“LED_PIN”(稍后解释)。
通过第8行上的“digitalWrite ()”更改输出。
digitalWrite( LED_PIN, HIGH );
指定所要更改输出的端子编号以及端子输出的状态。引脚编号指定为和pinMode ()中一样的“LED_PIN”。如果端子状态被指定为“HIGH”,将会输出5V的电压。如果您连接了一个LED,那么将会产生电流,LED会亮起。如果要关闭LED,请将状态指定为“LOW”,使端子电压变为0。
程序结构
本节将会介绍程序中数字输出以外的内容。以下所示的第一行代码将电子组件所连接的端子编号进行了命名。
const int LED_PIN = 13
将电子组件连接到Arduino的接口被进行了编号。例如,将“13”分配给了上次连接了外部LED的端子。在实际控制LED时,必须在程序中指定所连接的接口编号。但是,如果您直接在程序中输入数字,将很难分清数字的含义,并且如果您之后对程序进行了修改,就要花费更多的时间来研究这些数字。另外,如果更改了连接的对象,就需要在程序中所有指定接口编号的位置进行更改,这非常耗时,并且有可能造成其他部分被意外更改,从而导致故障的发生。
因此,最好为电子部件所连接的接口编号指定为一个描述性的名称。本文中,我们指定了“LED_PIN”(变量名)的名称,并且在变量中存储了“13”。之后,如果想要对LED进行控制,输入“LED_PIN”即可。需要注意的是,变量名前面的“int”表示变量为整型,“const”可以防止程序中的变量内容被更改。
如下所示的第3行到第5行为setup ()函数,该函数仅被执行一次。
void setup() {
:
}
Arduino开启后,将根据其中的程序执行该函数。本项目中的setup ()函数中的程序仅被执行一次。因此,setup ()被用于初始设置。该程序用于设置数字输入/输出端子的模式。
如下所示的第7行到第9行为loop ()函数,该函数将被重复执行。
void loop(){
:
}
setup ()函数中的程序被执行后,将开始执行loop ()函数。当程序运行到loop ()函数的结尾时,将会返回到loop ()的开头再次运行。程序的主体内容(如LED照明和电机控制)将会在这里进行描述。在该程序中,可以对数字输出进行切换从而点亮LED。
需要了解的电气术语
现在我们来了解一些电气术语的基本含义。当您挑选电子元件或者使用电子元件时,对电气术语有一定了解会帮助您进行的更加顺利。第一个要知道的电气术语是“电流”。
金属中存在一种被称为“正电荷”的正静电。静电这一概念很难理解,我们可以把正电荷视作带有正电荷的粒子,如图所示。
这些正电荷由电池或其他电源产生,穿过导体,然后流入电子组件(如LED)。“电流”表示在金属中流动的正电荷量。如果有大量正电荷流过,则LED等电子部件就能够获取大量的电能(能量),光照强度更大。相反,如果电流较小,那么供给的正电荷就较少,在使用LED时,光照强度将会更弱。
电流的单位是“A”(安培)。
除此之外,带负电的电荷被称为“负电荷”,但是,在电子电路中,我们通常将正电荷在电路中的移动方向作为电流方向。
需要了解的另一个电气术语是“电压”。金属中的正电荷是电力的来源。正电荷可以在电场力的作用下进行移动。这种可以移动正电荷的力被称为“电压”。如果电压很大,就可以驱动更多的正电荷移动,从而产生更大的电流。而如果电压较小,那么移动的正电荷数量也会较少,因此产生的电流较小。
电压的单位是“V(伏特)”。
电池可以提供1.5V的电压,Arduino的电源端子可以提供5V的电压,家用电源可以提供120V的电压。
通过电阻控制电流
许多电子组件都具有可承受的最大电流值,如果通过的电流超过了这个值,电子组件会发生损坏。例如,如果流经LED的电流超过了LED可以承受的极限值,那么LED可能会冒出烟雾或者发热至破裂。损坏的LED将会无法使用。触摸热的LED还有烧伤的危险。
因此,对流经电子组件的电流进行调整很重要。电阻器的作用是限流。电阻器是可以阻止电流流动,并且阻碍正电荷流入其内部的电子元件。因为电阻器抑制了电流,所以流经电子组件的电流量减少了,电子组件就可以安全地进行工作。
电阻器对正电荷流动的抑制程度用“电阻值”来表示。电阻值越小,流动的正电荷量就越多,电流越大。反之,如果电阻值较大,那么电流就会更小。电阻值的单位为“Ω(欧姆)”。电阻值、电压和电流之间的关系可以用“欧姆定律”的公式来表示。当电压施加到具有固定电阻值的电阻器两端时,将电压除以电阻值就可以得到流经的电流值。
例如,如果将1kΩ电阻连接到Arduino的5V端子上,可以用以下公式计算电流量。1kΩ 是1000Ω。
5V ÷ 1000Ω = 0.005A = 5mA
如果流经电子组件的电流值恒定,您就可以计算出所连接电阻器的电阻值。在这种情况下,用施加的电压值除以流经的电流值就可以得到电阻值。例如,要在施加5V电压的同时施加10mA的电流,使用以下公式得到所连接电阻器的电阻值。10mA是0.01A。
5V ÷ 0.01A = 500Ω
您可以在此处获取有关欧姆定律的更多信息:Learn About Ohm’s law, GPIO, and transistors by simple LED circuit on Raspberry Pi(通过Raspberry Pi上的简单LED电路了解欧姆定律、GPIO和晶体管)。
电阻器的侧面印有4个或5个色带。您可以通过色带知道其电阻值。色带的含义如下表所示。第一个和第二个数字组合起来是一个两位数的数字,第三个数字是倍数,第四个表示的是电阻误差。
例如,印有“Brown Black Red Gold(棕色 黑色 红色 金色)”的电阻器的电阻值是1 kΩ。
将LED与电阻连接并点亮LED
使用LED时,必须连接适当的电阻器来点亮LED。可以通过简单的计算知道需要连接多少阻值的电阻器。当LED和电阻器串联连接并且两端连接了电源时,电阻值可以用以下公式计算得到。
电源电压即为所连接电池的电源电压。连接到Arduino的数字输出时,将高电平状态下输出的5V作为电源电压。对于流经LED的电流和电压,使用电子元件销售点和数据手册上所提供的“正向电压(VF)”值和“正向电流(IF)”值。如果将流经LED的电流设置为正向电流值,那么其两端的电压即为正向电压。例如,如果使用了红色LED“SLR-56VC3F”,正向电压是2V(光电特性中的正向电压Vf项),正向电流是10mA(光电特性中的If项)。将该值作为“LED电压”和“LED电流”进行计算。如果电源电压是5V,LED电压是2V,电流是10mA,那么如下所示,得到的电阻值为“300Ω”。
(5V – 2V) ÷ 0.01A = 300Ω
另外,如果您想要将LED灯调暗,可以减小电流值。鉴于LED电压几乎不会发生改变,所以仍然使用正向电压值。例如,当流经电流为1 mA时,计算结果如下:
(5V – 2V) ÷ 0.001A = 3000Ω = 3kΩ
我们将具有计算得到的电阻值的电阻器与LED连接。如果无法获取与计算得到的电阻值完全一致的电阻器,可以使用阻值相近的电阻器。
在本文中,我们讲解了数字输出方式、电压以及电流。下次,我们将会改变LED的亮度。