Arduino电子制作基础③ 用数字输出来控制LED点亮

第1篇:让电子元器件动起来!
第2篇:Arduino的准备工作

 

※本翻译文章最初发表于2021年5月27日,现重新编辑后再次发表。

虽然Devices Plus已经介绍过Arduino的多种应用和作品示例,但是了解相关基础知识对于任何项目的构建仍然是非常重要的!
这次,我们将为您介绍Arduino电子制作的基础知识。此次的分享嘉宾是著名的福田和宏老师,他因编写了《有这本书足够!用Arduino开始电子制作 超简单入门教程》等书籍而广为人知。

在上一篇中,我们准备了Arduino用的开发环境,并尝试了让Arduino上的LED和外部连接的LED闪烁。

本文将介绍可以通过Arduino进行ON/OFF切换的数字输出的有关内容,并且说明如何创建使用LED的数字输出程序。

另外,要想更好地使用电子器件,还需要了解电气相关的术语,例如“电压”和“电流”。如果不理解这些术语的含义,您在购买电子器件的时候将无法确认其是否适用于您的用途。另外,在实际连接电子器件时,也需要合适的电压等参数才能确保正确运行。因此,在进行电子制作前,我们需要先了解一些必备术语的含义。

 

目录

  1. Arduino上的接口
  2. 可以输出两种状态的“数字输出”
  3. 通过程序点亮LED
  4. 程序结构
  5. 需要了解的电气术语
  6. 通过电阻控制电流
  7. 将LED与电阻连接并点亮LED

 

1. Arduino上的接口

在Arduino的上方和下方具有插孔状的引脚,作为连接和控制电子器件的接口。这些接口可以实现多种控制功能,例如在这里连接LED或电机来对它们的工作进行控制,连接开关或类似的控件以进行打开/关闭的操作,或连接温度传感器来测量室温。

Arduino UNO的上方有14个(0至13)“数字输入输出”引脚,右下方有6个(A0至A5)“模拟输入”引脚。

数字输入输出引脚的输出具有两种状态:“高电平状态”和“低电平状态”,可以用来使电子器件工作,还可以通过检查电压状态来确认电子器件的状态。

而模拟输入是可以输入连续变化电压的引脚。

每个引脚被分配了一个数字编号,在通过程序控制电子器件时会指定其数字编号。

01

 

2. 可以输出两种状态的“数字输出”

数字输出是一种可以通过程序更改每个引脚状态的接口。可以在“高电平”和“低电平”两种电压状态之间进行自由切换。例如,如果连接LED并使电压处于高电平状态,那么LED将会被点亮。相反,如果使其处于低电平状态,则LED会熄灭。

11

在Arduino中,当电压是高电平时,引脚电压为“5V”,是低电平时,引脚电压被切换为“0V”。高电压状态被称为“高电平(HIGH)”,低电压状态被称为“低电平(LOW)”。在程序中使用“HIGH”和“LOW”来分别指定高电平和低电平。关于数字输入和模拟输入,将在本系列连载后面的内容中进行介绍。

 

3. 通过程序点亮LED

下面,我们尝试通过用程序控制数字输出来点亮LED。本节将介绍如何点亮与上一篇中提到的数字输入输出引脚13相连接的LED。我们按照以下步骤创建程序。创建程序后,像上一篇中所介绍的那样将程序写入Arduino,然后确认LED是否被点亮。

const int LED_PIN = 13

void setup(){
    pinMode( LED_PIN, OUTPUT );
}

void loop(){
    digitalWrite( LED_PIN, HIGH );
}

当对数字输出进行控制时,第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”,使引脚电压变为0V。

 

4. 程序结构

本节将会介绍程序中数字输出以外的内容。以下所示的第一行代码将电子器件所连接的引脚编号进行了命名。

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”(安培)。
除此之外,带负静电的电荷被称为“负电荷”,但是,在电子电路中,我们通常考虑正电荷在电路中的移动情况。

21

需要了解的另一个电气术语是“电压”。在导线等的金属中的正电荷是电力的来源。正电荷可以在电场力的作用下进行移动。这种可以移动正电荷的力被称为“电压”。如果电压很大,就可以驱动更多的正电荷移动,从而产生更大的电流。而如果电压较小,那么移动的正电荷数量也会较少,因此产生的电流也较小。

电压的单位是“V(伏特)”。电池可以提供1.5V的电压,Arduino的电源引脚可以提供5V的电压,家用电源的插座可以提供100V(针对日本国内)的电压。

22

 

6. 通过电阻控制电流

许多电子器件都具有可承受的最大电流值,如果通过的电流超过了这个值,电子器件就会被损坏。例如,如果流经LED的电流超过了LED可以承受的极限值,那么LED可能会冒烟或者发热至破裂。损坏的LED将会无法再用。触摸热的LED还有烫伤的危险。

因此,对流经电子器件的电流量进行适当调整很重要。电阻器的作用是限流。电阻器是可以阻止电流流动,并且阻碍正电荷流入其内部的电子元件。因为电阻器抑制了电流,使流经电子器件的电流量减少,从而可以让电子器件安全地进行工作。

31

电阻器对正电荷流动的抑制程度用“电阻值”来表示。电阻值越小,流动的正电荷量就越多,电流越大。反之,如果电阻值较大,那么电流就会更小。电阻值的单位为“Ω(欧姆)”。电阻值、电压和电流之间的关系可以用“欧姆定律”的公式来表示。当电压施加到具有固定电阻值的电阻器两端时,将电压除以电阻值就可以得到流经的电流值。

33
例如,如果将1kΩ电阻连接到Arduino的5V引脚上,可以用以下公式计算其电流量。1kΩ 是1000Ω。

5V ÷ 1000Ω = 0.005A = 5mA

反之,如果希望以特定的电流值流经电子器件,您还可以计算出所连接电阻器的电阻值。在这种情况下,用施加的电压值除以希望流经的电流值就可以得到电阻值。例如,要在施加5V电压时流过10mA的电流,使用以下公式得到所连接电阻器的电阻值。10mA是0.01A。

5V ÷ 0.01A = 500Ω

有关欧姆定律的更多信息,在这篇文章中也有比较详细的介绍:通过Raspberry Pi闪烁LED项目学习欧姆定律、GPIO和晶体管知识

电阻器的侧面印有4个或5个色带。您可以通过色带知道其电阻值。色带的含义如下表所示。第一个和第二个数字组合起来是一个两位数的数字,第三个数字是倍数,第四个表示的是电阻误差。

33

例如,印有“Brown Black Red Gold(棕色 黑色 红色 金色)”的电阻器的电阻值是1 kΩ。

 

7. 将LED与电阻连接并点亮LED

使用LED时,必须连接适当的电阻器来点亮LED。可以通过简单的计算知道需要连接多少阻值的电阻器。当LED和电阻器串联连接并且两端连接了电源时,电阻值可以用以下公式计算得到。

41

电源电压即为所连接电池的电源电压。与Arduino的数字输出引脚相连接时,将高电平状态下输出的5V作为电源电压,指定“5”。对于流经LED的电流和电压,使用电子元器件销售网站或技术规格书上所提供的“正向电压(VF)”值和“正向电流(IF)”值。如果将流经LED的电流设置为正向电流值,那么其两端的电压即为正向电压。例如,如果使用了红色LED“SLR-56VC3F”,正向电压是2V(电气特性和光学特性中的正向电压Vf项),正向电流是10mA(电气特性和光学特性中的If项)(https://docs-apac.rs-online.com/webdocs/101f/0900766b8101fb48.pdf)。将这两个值分别作为“LED电压”和“LED电流”进行计算。如果电源电压是5V,LED电压是2V,电流是10mA,那么如下所示,得到的电阻值为“300Ω”。

(5V – 2V) ÷ 0.01A = 300Ω

另外,如果您想要将LED灯调暗,可以通过减小电流值来实现。鉴于LED电压几乎不会发生改变,所以仍然使用正向电压值进行计算。例如,当流经电流为1 mA时,计算结果如下:

(5V – 2V) ÷ 0.001A = 3000Ω = 3kΩ

我们将具有计算得到的电阻值的电阻器与LED连接。如果无法获取与计算得到的电阻值完全一致的电阻器,可以使用阻值相近的电阻器。例如,在通过计算得到900Ω的情况下,可以使用阻值较为接近的1kΩ的电阻器。

在本文中,我们讲解了数字输出的方式、电压以及电流。在下一篇中,我们将会尝试改变LED的亮度。

 

 

本系列连载的内容

第1篇:让电子元器件动起来!
第2篇:Arduino的准备工作
第3篇:用数字输出来控制LED点亮(本文)
第4篇:LED的亮度调节
第5篇:驱动电机并实现自动控制
第6篇:读取开关状态
第7篇:用模拟输入来读取电压
总结:Arduino电子制作基础知识总结! 基于微控制器的电子制作基础之基础篇

福田和宏
福田和宏

作家,居住在日本札幌。喜欢撰写有关电子创作、电脑、Linux、智能手机等方面的文章。在为“Raspberry Pi Magazine”和“日经Linux”供稿。著有《这本书足够!Raspberry Pi超简单入门教程》(SOTECHSHA)、《学习各种电子元器件的控制!Arduino电子创作 实战教程》(SOTECHSHA)、《Arduino实用入门》(技术评论出版社)等书籍。 目前,创办了“札幌电子工艺部”(https://sapporo-elec.com/),这里汇集了众多电子创作发烧友,大家使用各自的电子技能创作各种作品。任何人都可以参加,也期待您的加入!

https://deviceplus.jp

相关文章

  1. Arduino电子制作基础⑦ 用模拟输入来读取电压

  2. Arduino电子制作基础⑥ 读取开关状态

  3. 12

    Arduino电子制作基础⑤ 驱动电机并实现自动控制

  4. 11_2

    Arduino电子制作基础④ 调节LED的亮度

  5. 01-1

    Arduino电子制作基础② Arduino的准备工作

  6. 01_new

    Arduino电子制作基础①让电子元器件动起来!

  7. 795316b92fc766b0181f6fef074f03fa

    从历史到使用方法的全面了解!人气微控制器开发板Arduino究竟是何方神圣?

TECH INFO

  • Sugiken老师的电机驱动器课堂
  • 重点必看
  • 技术分享
  • Arduino入门指南

基础知识

  • Si功率元器件
  • IGBT功率元器件
  • 热设计
  • 电路仿真
  • 开关噪声-EMC
  • AC/DC
  • DC/DC
  • 电机
  • 传递函数

工程技巧


Sugiken老师的电机驱动器课堂

PICK UP

PAGE TOP