本文介绍了 Arduino基本输入/输出 的实现方法及演示,详细阐述了如何使用开关进行数字输入和使用电位计进行模拟输入。文章提供了所需物料清单和详细的电路连接步骤,同时解释了代码的工作原理和关键函数。
Arduino是初学者和专业人士都广泛使用的开发解决方案之一。通过掌握基本的输入和输出,可以建构更多功能,进行更多操作,实现更多不同的设计。通过在Arduino进行编程,可以激发创新思维,一步一步完成更复杂的项目,探索无限的可能性。以下视频 将介绍如何使用开关进行数字输入和使用可变电阻进行模拟输入。 赶快点开来看吧!
在您掌握了 Arduino 基础知识并能使用代码控制LED灯后,是时候了解 Arduino 输入了,它是用于向 Arduino 开发板提供信息的电信号。Arduino评估板可以被程序设计来接收电信号,并根据这些输入采取相应的操作。
开关是一种机械装置,通常使用杠杆或按钮来连接或断开电路,要构建此电路,您需要一个小型按键,而这个小型按键是众多不同类型的开关中的一员。
建议使用 Arduino Uno (1050-1024-ND) ,或兼容的开发板,例如 Adafruit Metro (1528-1214-ND) 、 Sparkfun Redboard (1568-1977-ND) 或 Seeeduino (102010026-ND) 来开始。 Arduino Uno 或兼容的开发板,以及 USB 电缆
通孔电阻 , 100-1000 欧姆和 10K 欧姆
从为新电路制作原型的基本设置开始:先把Arduino UNO评估板和无焊面包板一起组装在一个固定评估板上,将Arduino评估板上的5伏和地线连接到面包评估板上的导轨,再连接到面包板另一侧的导轨。这是制作一个新电路原型的基本设置。
然后,连接一个输出端的LED,将较长的正极连接到引脚 13,将负极通过一个小阻值的电阻 (100 欧姆 - 1K 欧姆) 连接到地线。
接下来将按键添加到面包板上,按键通常被设计成可以跨过面包板的中心分隔线。如果按键没有卡紧,可能需要稍微弯曲它的引脚。 按键的一侧连接到引脚2,同时通过一个较大阻值的电阻 (1万欧姆) 连接到电源,按键的另一侧连接到地线。
这里使用对角引脚而不是其他连接,因为无论开关内部如何布线,这都是确保正确连接的可靠方法。你也可以用万用表来检查,探测开关上的两个针脚,然后按下它以查看哪些是连接的。 打开可下载的 Arduino 软件,点击File > Example > 02.Digital > Button。
将代码上传到 Arduino 评估板后,当按下按键,LED灯就会从亮着变为熄灭。
这个程序的开头有一些常量,它们与变量类似,用于存储信息。然而,正如你所知常量在整个程序中不会改变,因此非常适合用于存储引脚号。它们占用的内存空间比变量少。
第36行将引 脚2配置为输入模式,这样就可以接收按键的状态 在主循环中,digitalRead()函数检查引脚2的状态,该状态可能是5伏(即高电平HIGH)或接地(即低电平LOW),并将该状态存储在名为buttonState的变量中
第44行包含一个if()语句,它使用比较运算符执行条件判断,比如大于、小于,或者在这个例子中,是等于,用两个等号表示。如果满足条件,大括号内的代码将被执行,LED灯会亮起(HIGH)。如果不满足条件,else语句内的代码将被执行,LED灯会熄灭(LOW)。
静止状态下,开关的引脚之间没有连接。引脚2通过一个阻值较大的1万欧姆电阻连接到5伏电压上,当按下按键时,开关引线被连接,引脚 2 无需电阻即可接地。由于电流会走最小阻抗的路径,引脚会强烈感知到与地线的连接,并忽略与较弱的1万欧姆电阻与5伏电压的连接。但当没有其他信号时,比如没有按下开关,引脚只能感知到与5伏电压的较弱的连接。
所以这个电阻将引脚上拉到5伏电压,因此,它被称为上拉电阻。如果没有连接上拉电阻,引脚2在按键按下之前将不会连接到任何地方,这被称为浮动引脚,可能会产生来自静电和电磁干扰的随机噪声。
同样地,电阻还可以用来将一个引脚连接到地线,这被称为下拉电阻。然后,你可以将按键的另一侧连接到电源,而不是地线。
所以,要改变按键的功能,可以通过改变电路的布线或者改变代码这两种方式实现,但千万不要同时做这两件事!在这种情况下,后者更简便,但并不总是如此。
接着,编辑第43行和第44行的if()语句和它的注释,将其中的HIGH改为LOW,然后将更新后的代码上传到开发板上,检查按键是否现在可以将LED灯打开而不是关闭。
Arduino的很多引脚都内置了上拉电阻,芯片内的微小电阻就是为了这个目的而设计,在设置中可以启用内置的上拉电阻,这样就不再需要面包板上额外的电阻了。
你也可以使用串口监视器,它是一种通过USB线向计算机报告来检查代码中不同位置信息的方式。要了解其工作原理,请至 Arduino 软件中的File> Examples> 01 Basics> DigitalReadSerial,然后将示例程序上传到您的 Arduino。
为了建立串口连接,你要在设置中使用Serial.begin()函数,9600是波特率,表示每秒传输的数据位数。
在主程序循环内,可以使用Serial.print()函数将信息发送到串口。Serial.println()的作用与Serial.print()类似,但会在新的一行上。
所以,当串口监视器打开时,可以实时查看Arduino在引脚2上检测到的值。串口监视器在故障排查时非常有用,可以轻松地对比预期结果和Arduino实际执行情况。
你还可以使用串口通信来在设备之间进行通讯等更多功能,详情请参阅 Arduino参考文档 。
接下来,将使用模拟输入将信息发送到 Arduino 板。这些A开头的引脚,位于数字输入输出引脚的对面,这些特殊引脚连接到Arduino的模拟数字转换器(ADC)。它能将介于0伏到5伏之间的模拟信号转换为从0到1023范围内的数字。
要创建该模拟信号,可以使用可变电阻器,该电阻器在受到作用时会改变其电阻值。例如,您可以转动 电位计 上的旋钮,按下或弯曲 力敏电阻器 (FSR),或改变 光敏电阻器 的曝光量。
将一个小型的电位器,插在面包板的三行上,外侧的引脚与电源和地线相连,中间引脚连接到模拟引脚A0。
将一个LED连接到引脚9,这样就可以使用脉宽调制(PWM)来控制LED的亮度。
在 Arduino 软件的 03 Analog> AnalogInOutSerial 可找到该电路的内置示例代码。
上传代码后,打开串口监视器,同时观察LED灯在转动电位器上的旋钮时的状态。模拟输入读取的值将会在第一列,LED灯的亮度值将会在第二列。
这个示例程序在第39行使用了map()函数,它将一个数字范围映射到另一个数值范围。它有五个参数,包括:可改变的值、当前范围的下限、当前范围的上限、目标范围的下限,以及目标范围的上限。因此这行代码将一个名为outputValue的变量,设置为一个0到255之间的数字,具体取决于电位器的位置。
第44到47行的串口打印命令列出文本标签(位于引号内的内容),以及从传感器输入的值和输出到LED的值。
通过同时在串口监视器上查看这些值,可以更好地理解像map()这样的函数是如何工作的。在编写你自己的代码时要牢记这一点!
有许多传感器的工作方式类似数字开关或模拟输入,因此可以使用刚刚讲解的相同代码。比如,你可将按钮替换成 红外传感器 ,或者将电位器替换成 光敏电阻 。
如果你有看上一期的介绍并且走到了这一步,那么你现在已经掌握了大多数Arduino程序的基本构建模块。当你进行项目设计时,问问自己输入是什么,输出是什么,以及它们是模拟的还是数字的。然后你可以相应地混合使用内置示例,并开始你的原型设计。Arduino 还有更多内置示例,让您慢慢探索,脑洞大开,成就更多创意诞生。 喜欢Digi-Key的文章吗?立即到Digi-Key官网,或关注Digi-Key官方微信 digikey_electronics 吧!
欢迎将我们设为“ 星标 ”,这样才能第一时间 收到推送消息。
免费领 取 Autosar入门与实践资料包!