相信无论是51板还是stm32板,甚至是arm板,最简单的莫过于数字信号的输出或输入,所以Arduino的数字信号口的操作这里我们不打算重复,我们要讲讲Arduino模拟信号口的操作。
文章出处: https://haigear.blog.csdn.net/article/details/84795847
一、基础知识
这里我们首先讲模拟信号的输入(即读取),首先我们要普及一下基础知识,什么是模拟信号,什么是数字信号,模拟信号与数字信号有什么差别?
当然,我不想教科书式的来阐述,我就分别用一句话来说明:
数字信号只有高电平和低电平(可以理解为要么就低电压要么就高电压,就两种电压来表示0和1,没有中间电压);
模拟信号曾在连续的电压,它的变化是连续的,不会总从一个高电压跳崖式的陡降到低电压,当然也不会陡然爬升;
他们的区别很明显:数字信号只有两个种电压,且仅仅在这两种电压间变化;模拟信号是真实的自然电压信号,其信号为连续的电压变化;
好了,明白这些了,我们就可以来一起看看我们的Arduino板的模拟信号的读取了。
我们以Arduino的UNO板为例来说明,如下图:
红色线框所指的ANALOG IN的A0到A5共六个口都为模拟信号输入口。我们要读取的模拟信号一定是来自于这六个口。
二、arduino端代码实现
在程序中,我们用analogRead函数来读取,这个在程序中非常简单,我们来看看一个典型的读取模拟信号口的程序:
/*
Name: Sketch1.ino
Created: 12/1/2018 9:42:13 AM
Author: Administrator
*/
// the setup function runs once when you press reset or power the board
void setup() {
Serial.begin(9600);
}
// the loop function runs over and over again until power down or reset
void loop() {
int val=analogRead(A0);
Serial.write(val);
}
这段代码用了analogRead读取A0口的信号值,然后通过串口输出,如果我们的硬件部分连接好了,在串口监视器中就能够看到读取到的模拟信号的数值了。很简单,仅仅从程序代码的角度来说,和数字口比较可以说更为简单。毕竟数字口我们还需要用pinMode设置数字口的模式然后再读取。
三、硬件准备和认知
我们很多的传感器都是接在模拟口的,因为传感器得到的信号来自大自然,如果传感器上没有进行模数转换(所谓模数转换那就是将模拟信号转换为数字信号),我们就必须接到模拟信号口上作为输入。
比如,我们在网络上常常会买到很多的arduino实验配件,很多都是不带模数转换的原始器件(当然也有部分是带有模数转换的,那个就要贵多了),比如变阻器(又称电位器)、光敏电阻、摇杆(游戏杆)等等。那么要读取他们的值该如何接线呢?
是不是也像数字信号的接口一样,一个接GND一个接信号口,或者一个接VCC一个接信号口呢?甚至,我们还可以凭想象,模拟口接收到变化的电压直接给UNO板来进行模数转换即可,非也!非也!
1、硬件连接图
但凡模拟信号输入的器件和模块,一个信号都需要三根线,有可能发生电压变化的那根线接在模拟信号输入口,其余两根接在GND和VCC。这里列出几种器件的接法:
有关光敏电阻的电路仿真可以参考我后续的博文: proteus光敏电阻电路的arduino仿真
如果我们通过一个可变电阻来模拟,接下如下:
上面就是光敏电阻和电位器的接线,很显然,他们都是三根接线。不仅要知道需要接三根线,还要搞懂为什么接三根,原理的消息分析可以参考后面的博文: proteus光敏电阻电路的arduino仿真
下面,我们来结合光敏电阻的信号读取,在Processing中绘制一个刻度图,看看效果:
2、Processing的代码如下
Serial sp;
int val;
void setup()
{
size(600,400);
background(255);
sp=new Serial(this,"COM3",9600);
}
void draw()
{
while(sp.available()>0)
{
val=sp.read();
println(val);
background(255);
fill(0,180,0);
//translate(0,400);
rect(40,380-val*2,530,val*2);
line(38,20,38,380);
for(int i=2;i<20;i++)
{
line(38,i*20,48,i*20);
fill(0, 102, 153);
text(20-i, 50, i*20);
}
}
}
3、最终效果
随着我们的光照的变化,绿色矩形的高度就会发生变化,运行效果如下:
当然,这里的Processing的程序也可以用于电位器的实验和摇杆左边变化的图形显示。
码字不易,请注明出处:https://haigear.blog.csdn.net/article/details/84795847