Hi,大家好!经过上一次的学习,我们知道了如何获取外部电器元件输入的数字信号。这次我们将一起学习如何获取外部电器元件输入的模拟信号,也即连续信号。
和上一次同理,这次我们使用的元器件换成了一个模拟信号输入器件,使用旋转电位计代替上一次的按键开关。道理都是相通的,废话不多说,让我们直奔主题!
首先还是准备阶段,包括硬件和软件两方面。
硬件方面
image.png

具体包括如下:

  • Arduino UNO电路板(1块)
  • 旋转电位计(1个)
  • 面包线(3根)
一共只有三种部件,比上一次还少!这次多了一个旋转电位计,其实就是我们平时常见的旋转开关,此开关可以发出连续的模拟信号。其他部件不必多说。
软件方面Arduino官方提供的IDE。
好!需要的就这些。下面我就开始连接电路!
连接电路

image.png

直接用面包线把电位计连接到Arduino UNO电路板上,注意电位计的正负电源针脚不要接错!
接下来是最后一步!
添加几行代码首先打开Arduino的IDE,新建一个Arduino项目窗口。


完成之后,向其中添加如下代码。

// 对Arduino电路板或相关状态进行初始化方法
  • void setup() {
  •   // 开启串行通信,并设置其频率为9600。
  •   // 如果没有特别要求,此数值一般都为9600。
  •   Serial.begin(9600);
  • }
  • // 系统调用,无限循环方法
  • void loop() {
  •   // 读取针脚号为 A0 的模拟信号。
  •   // analogRead() 方法是模拟信号读取方法。
  •   // 将模拟信号值存入名为 sensorValue 的整型变量。
  •   int sensorValue = analogRead(A0);
  •   // 将获取的模拟信号值打印到串口显示。
  •   Serial.println(voltage);
  • }
  • 复制代码
    好!总共所需要的代码就这么多!如果你和大家一样,一直跟随我们的教程学习,那么其实这里我们只出现了一个新面孔!没错,那就是analogRead()方法。在前面的教程中,我们还介绍过他的孪生兄弟,能猜到是谁吗?就是analogWrite()方法。这两个方法就像是孪生兄弟,前一个是读取元器件输入的模拟信号,后一个是向元器件写入模拟信号。analogRead()方法调用时,需要输入的参数是Arduino UNO电路板上的针脚号,此处我们获取的是 A0 针脚上输入的信号。
    最后,我们只需要将程序烧入Arduino即可。

    图片来源:Arduino官方IDE的文件编辑菜单选项
    根据上图指示,点击向右指向的箭头图标,将程序烧入。成功之后,点击右上方的放大镜图标,打开串口调试窗口。此时你会看到,窗口在实时的更新获取到的数据。旋转电位计,窗口中的数据也会相应发生改变。因为Arduino UNO电路板上有一个模拟数字信号转换器,俗称ADC(analog-to-digital converter),此时读到的数值会被转换为0到1023之间,即analogRead()方法返回的值在0到1023之间。
    总结打完收工!这次我们主要学习了如何获取外部元器件输入的模拟信号。这个功能的使用非常的常见,比如控制灯光的强弱,声音的大小等等,都有可能会用的到。而实现这个想法,也只需要一个analogRead方法即可,已经无法再简单了!
    下期预告至此呢,我们学习了数字信号的输入输出,模拟信号的输入输出。我们已经具备了一定的基础。接下来要做什么呢?嗯,接下来的小怪兽会逐渐强大!在前几次学习中,我们用到了一个名为delay()方法,这个方法是系统类库提供给我们的,拿来就能用。那么现在问题来了,为了让以后的编程过程更灵活,如何在不使用这个方法的情况下实现时间延迟呢?嗯,下一次我们将挑战这个问题!