《Arduino实战》——第3章 简单项目:输入和输出 3.1 认识模拟电路

第3章 简单项目:输入和输出

本章涵盖的内容

  • 着眼于模拟世界
  •     读取一个模拟输入
    
  •     使用扬声器发声
    
  •     搭建一架五声音阶电子琴
    

在前一章中,我们了解了Arduino数字化的一面,循序渐进地搭建了一系列项目,展示了Arduino的输入、输出和中断等特性。在本章,我们将着眼于Arduino的另一面,看看它如何与我们周围的世界交流。

基本上,我们周边的世界可以分成两部分——模拟和数字——在这一章我们将研究与模拟世界的交互。让我们再从一个简单的元件开始,电位器,它可以为Arduino提供模拟量的输入。接下来,我们要尝试添加一个传感器——压电换能器,它既可以提供模拟输入,也可以进行模拟输出。我们接下来会再添加4个压电换能器和一个小型扬声器来制作一架五声音阶电子琴。

以下是完成本章所需的元件:

  • 1片Arduino板卡
  • 1块面包板和一些跳线
  • 1个小型电位器(最好用微调型电位器,因为它很容易插进面包板)
  • 5个稳压二极管,0.5 W 5.1 V(我们使用的是BZX55C5V)
  • 5个带线的无外壳的压电换能器(敲击传感器)。
  • 5个1 MΩ(100万欧姆)电阻。
  • 1个1 kΩ电阻。
  • 1个8Ω的小型扬声器。

下面让我们开始学习模拟电路的基础知识吧。

3.1 认识模拟电路

在前一章中,已尝试使用了可以闭合和断开的按键,但如果你想测定一个模拟量的输入,比如一张照片或者一个力敏电阻,那又该怎么办呢?如果Arduino是一个纯数字的设备,那你将无法测定这些量,这也就限定了你所能制作的作品的范围。幸运的是,Arduino也已经具备了与模拟世界交互的能力。

Arduino可以调节一个LED的亮度,却不改变施加在LED上的电压,这是利用了一种专门的技术,称为脉冲宽度调制(PWM),或者简称脉宽调制(后面会详细讲解)。除了可以利用脉宽调制进行模拟输出以外,Arduino还可以接受0~5 V的模拟输入。

标准的Arduino有6个模拟输入引脚,标注为ANALOG IN A0、A1、A2、A3、A4、A5;另外,还有6个模拟输出引脚。

在本章,我们将集中精力讲解analogRead函数,而analogWrite函数我们留到以后的章节再讲解。

让我们来了解一下数字设备和模拟设备有什么区别吧。

3.1.1 模拟和数字有什么区别

那模拟世界与数字世界的区别是什么呢?在数字世界中,所有的事物都只有两个状态,开关只能是开或关,LED只能是亮或灭,你要么是醒着的,要么是睡着的。这些状态可以用多种方式表示,0或1,开或关,高或低。Arduino的数字引脚也以与之相同的方式工作,当设置为输出时,它们要么输出0 V,要么输出5 V,0 V就是逻辑零,5 V就是逻辑一。在模拟世界中,事物都有很多种取值。音乐中的音符涵盖了很多个频率,汽车加速的过程达到了很多个速度,一束正弦波在最大最小值之间平滑过渡,温度在最大最小值之间连续变化。

我们时常想要探索模拟的世界,Arduino有6个模拟输入引脚可以帮我们完成这个愿望。但Arduino仍然是一个数字设备,所以你需要一种方法,将输入的信号转换为数字表示。这项工作是由模数转换器(analog-to-digital convertor,ADC)完成的。表3-1列出了Arduino和Arduino Mega中模拟输入和模拟输出引脚的分辨率、电压范围和引脚编号。

在下一节中,要用电位器来提供一个手动可调的模拟输入,你可以通过串口监视器的显示,即时地观察到这些改变带来的效果。

3.1.2 读取电位器

为了观察Arduino的模拟输入功能是如何工作的,使用一个电位器是最简单的方法。电位器有各种不同的形状和尺寸,如图3-1所示,它们广泛应用于我们身边的各种设备中。如果你拥有一套带有音量旋钮的立体声音响,那它的音量调节很可能就是基于对一个电位器的旋转实现的。其他的例子包括使用电位器控制灯光的亮度,控制电炉或其他电热炊具的温度等。无论电位器的形状和尺寸如何,都可以通过某种方法改变它的电阻,无论是以线性方式还是以对数方式。

大多数电位器有3个引脚,中间的那个通常称为滑片,它通过移动接触器在一个固定电阻上的位置来改变电阻。对于本章,你需要一个电阻线性可调的电位器,而且要方便插接到面包板上,微调型电位器通常是一个理想的选择。

图3-2给出了电位器的电路符号。中部的箭头,也就是滑片,叠加在标准的电阻符号之上,用来表示这个电阻是可变的。

下面让我们动手将一个电位器连接到Arduino上。

3.1.3 连接硬件

现在你已经知道要用哪一种电位器了,让我们将它安装好吧。电路图如图3-3所示,电位器标记为R1,连接在5 V和地(GND)之间,滑片连接到模拟输入引脚A0。当你顺时针或逆时针旋转电位器的时候,就会将A0的电压在0~5 V之间调节。

将电位器插接到面包板上。中间的引脚通常是滑片,也就是你要连接到模拟输入端A0的引脚。组装完成后的电路如图3-4所示。

图3-4所示的电位器没有旋转柄,但可以插入一个微调工具来转动。如果没有电位器微调工具,你可以使用一个小型的一字型螺丝刀代替。

电位器连接好后,就可以开始写程序来读取它的数值了。

3.1.4 读取电位器的程序

下列代码清单给出了用于读取A0模拟引脚上0~5 V模拟数值的程序。

代码清单3-1 读取电位器

你并不需要在初始化函数中将sensotPin配置为输入,因为所有的模拟输入引脚已经默认配置成了输入。变量sensorValue存储了由analogRead函数读取到的数值,这个数值在0~1 023(含)之间,0表示0 V,1 023表示5 V。

两次读取之间10 ms的延时使得Arduino的模数转换器有时间来稳定并捕获到一个准确的数值。在Serial.println(sensorValue, DEC);这一行中的DEC指示println以十进制方式输出数据。其他的选项还包括HEX(十六进制)、BIN(二进制)和OCT(八进制)。

3.1.5 烧写和测试

将程序输入IDE之后,校验使之通过编译,然后将Arduino连接到你的计算机并将程序写入其中。打开IDE中的串口监视器,然后从头到尾地顺时针和逆时针旋转电位器。你应该可以看到串口监视器输出的数值随电位器的旋转而改变。示例输出如图3-5所示。

你现在知道了如何将一个值读入一个模拟输入引脚。下一节中,你要将Arduino连接到一个压电换能器。为此,你需要一些额外的元件,因为压电换能器可以产生非常高的电压,这可能会损坏Arduino。

时间: 2024-09-12 06:18:19

《Arduino实战》——第3章 简单项目:输入和输出 3.1 认识模拟电路的相关文章

《Arduino实战》——第3章 简单项目:输入和输出

第3章 简单项目:输入和输出 Arduino实战本章涵盖的内容 着眼于模拟世界读取一个模拟输入使用扬声器发声搭建一架五声音阶电子琴在前一章中,我们了解了Arduino数字化的一面,循序渐进地搭建了一系列项目,展示了Arduino的输入.输出和中断等特性.在本章,我们将着眼于Arduino的另一面,看看它如何与我们周围的世界交流. 基本上,我们周边的世界可以分成两部分--模拟和数字--在这一章我们将研究与模拟世界的交互.让我们再从一个简单的元件开始,电位器,它可以为Arduino提供模拟量的输入.

《Arduino实战》——导读

前言 Arduino实战我的Arduino之旅起始于2009年夏天在Rails Underground大会上听取Elise Huard的讲演-"物联网"之后.那次会议之后,我立即购买了一本Massimo Banzi所著的<Getting Started with Arduino>1(O'Reilly, 2008).在返程的火车上,我就把它从头到尾读了一遍. 不久以后,我购买了我的第一片Arduino,开始玩.做实验并搭建小项目.我的第一个大项目是一个避障机器人,我在2010

《Arduino实战》——2.5 小结

2.5 小结 Arduino实战在本章,你了解了如何开发一个典型的项目,从一个简单的程序开始,然后逐步增加其复杂性.在开发一个项目的过程中,每次只做出较少的修改,可以使其更容易调试和发现错误.如果程序不能正确地通过编译或者显示的结果与预期不符,你只需要着眼于最近修改和增添的代码就可以了. 这个项目将你带入了数字电路的世界,这里的输入输出只有两个状态:高电平和低电平.你已经探索了一些Arduino的功能,包括可用的函数,以及强大的中断功能.在之后的章节中,你会更加深入地研究几个数字引脚及其具有的更

《Arduino实战》——第1章 你好Arduino

第1章 你好Arduino Arduino实战本章涵盖的内容 Arduino的历史*Arduino硬件*硬件和软件安装*第一个闪烁的LED*Arduino能用来干嘛?这个问题的答案是丰富多彩的.Arduino已经被广泛应用于各种项目中. 制作诸如Pong和Space Invaders1这类各位儿时甚至父辈年轻时玩的游戏.这些游戏的画面都是单色的,音效也比较简单.制作循迹机器人,并学习机器人的基本原理.循迹机器人也可以用于工厂和仓库,它们可以按照既定的轨迹搬运货物.制作光电竖琴,通过手的挥舞来演奏

《Arduino实战》——3.2 压电换能器

3.2 压电换能器 Arduino实战你是否收到过一种生日贺卡,在它打开时就会播放一段有点走调的Pointer Sisters的<I'm So Excited>旋律.压电换能器还应用于很多其他的设备,比如移动电话.门铃以及水下声呐. 图3-6展示了一个典型的可以用于发声的压电换能器,它与那些在音乐贺卡中使用的类似. 它们是如何工作的?术语压电的意思就是"由压力产生电流".当一个压电设备受到挤压时,它就会产生一个电荷,如图3-7所示.换能器在与Arduino一起使用时的一个典

《Arduino实战》——1.5 熟悉IDE

1.5 熟悉IDE Arduino实战1.5 熟悉IDE如前文所述,IDE是基于Processing构建的,其设计目标就是易于学习和易于使用.IDE提供了供你编写和上传程序到Arduino所需的所有东西. 1.5.1 主编辑器 IDE软件打开后,会自动创建一个空的程序,这个程序会临时以当前日期来命名.在你保存这个程序的时候,还可以给它改一个更合适的名字. 图1-8展示的是打开了一个程序的IDE界面,图中还对各种按钮和窗口做了标注.主编辑器顶部的工具栏包含了以下功能. Verify--检查程序是否

《Arduino实战》——1.8 小结

1.8 小结 Arduino实战这是十分忙碌的一章,我们讲解了大量的背景知识.我们从学习一点Arduino的历史开始,介绍它在意大利互动设计学院的起源.我们了解了Arduino Uno和Mega这两种板卡的引脚和主要元件布局.我们还简要介绍了其他几种版本的Arduino,包括LilyPad和Seeeduino Film,并介绍了它们能提供什么特性.你搭建了开发环境并写了第一个Arduino程序,让Arduino走进你的生活. 我们详细讲解了Arduino的IDE软件并知道了一个Arduino程序

《Arduino实战》——3.4 小结

3.4 小结 Arduino实战在这一章中,通过使用analogRead函数了解了Arduino的模拟输入功能,还尝试从电位器和压电换能器两种分立模拟器件中读取模拟量.本章还讲解了模拟信号是如何通过模数转换器(ADC)转换为可以被Arduino处理的数字信号的.这种方法使你能够可靠地从许多其他模拟设备中读取数据. 本章最后的项目中大量使用了analogRead函数,利用5个压电换能器制作了一架五声音阶电子琴,敲击不同的压电换能器就能演奏出不同的音符.尽管声音有点走调,但愿你依然能找到愿意聆听的人

《动手玩转Arduino》——第2章 探索Arduino板和IDE 2.1 Arduino板

第2章 探索Arduino板和IDE 本章我们将研究Arduino板和IDE软件,我们要用IDE软件创建和上传Arduino程序到Arduino板(Arduino用草图表示程序,我们还是继续用程序这个传统术语).我们会学到程序的基本框架和程序里可以实现的基本功能,我们要创建和上传我们的第一个程序. 2.1 Arduino板 Arduino到底是什么?根据Arduino网站(http://www.arduino.cc/ )的介绍,它是一个开源的电子原型平台,这个平台是由灵活易用的硬件和软件所组成的