关于电路
项目

如何使用Arduino的模拟和数字输入/输出(I/O)

2015年6月10日经过蒂姆·杨布洛德

Arduino可以输入和输出模拟信号以及数字信号。

Arduino可以输入和输出模拟信号以及数字信号。

模拟信号是一个可以接收任何数量值的信号,与只有两个值的数字信号不同:高和低。为了衡量模拟信号的值,Arduino具有内置的模数转换器(ADC)。ADC将模拟电压变成数字值。您用于获得模拟信号值的功能是Analogread(PIN)。此函数将模拟输入引脚上电压的值转换为相对于参考值的数字值从0到1023。默认的参考电压为5 V(对于5 V Arduino板)或3.3 V(对于3.3 V Arduino板)。它具有一个参数,即引脚号。

Arduino没有内置的数字到Analog转换器(DAC),但是它可以脉冲宽度调制(PWM)数字信号以实现模拟输出的某些功能。用于输出PWM信号的功能是模拟值(PIN,值)。引脚是用于PWM输出的引脚号。值是与信号的占空比成正比的数字。当值= 0时,信号始终关闭。当值= 255时,信号始终打开。在大多数Arduino板上,PWM函数可在PINS 3、5、6、9、10和11上获得。大多数引脚上PWM信号的频率约为490 Hz。在UNO和类似板上,PINS 5和6的频率约为980 Hz。Leonardo上的第3和11号也以980 Hz运行。

要映射一个模拟输入值,该值范围从0到1023到PWM输出信号,范围为0-255,您可以使用地图(价值,源自高,高,托洛,Tohigh)功能。此功能有五个参数,一个是存储模拟值的变量,而其他参数分别为0、1023、0和255。

实验1:控制LED的亮度

在此实验中,我们将在模拟输出引脚上使用PWM信号来控制LED的亮度


需要硬件

  • 1 X LED
  • 1 x电阻
  • 1 x arduino uno r3
  • 1 X面包板
  • 2 x跳线


接线图

如下图所示,LED连接到Arduino的引脚2。为了改变LED的亮度,该程序将改变引脚2的PWM信号输出的占空比。


代码

const int pwm = 2;//初始化引脚2为“ PWM”变量void setup(){pinmode(pwm,output);//将引脚2设置为输出} void loop(){AnalogWrite(PWM,25);//将PWM设置为25延迟(50);//延迟50 ms模拟物(PWM,50);延迟(50);Analogwrite(PWM,75);延迟(50);Analogwrite(PWM,100);延迟(50); analogWrite(pwm,125) ; delay(50) ; analogWrite(pwm,150) ; delay(50) ; analogWrite(pwm,175) ; delay(50) ; analogWrite(pwm,200) ; delay(50) ; analogWrite(pwm,225) ; delay(50) ; analogWrite(pwm,250) ; }

used_arduino_analog_io.zip

实验2:使用电位计的LED亮度控制

在此实验中,我们将使用电位器控制LED的亮度。我们将Analogread()函数读取电压和AnalogWrite()函数以输出PWM信号,PWM信号的占空比与模拟电压成正比。


需要硬件

  • 1 x电位器
  • 1 X LED
  • 1 x电阻
  • 1 x arduino uno r3
  • 1 X面包板
  • 6 X跳线

接线图

如下所示连接电路。当您旋转电位计时,引脚A0上的电压将会改变。然后,该程序将在引脚2上更改PWM信号的占空比,从而改变LED的亮度。



代码

const int pwm = 2;//将引脚2命名为“ PWM”变量const int adc = 0;//模拟输入侧的命名引脚0为“ ADC” void setup(){pinmode(pwm,output);//将引脚2设置为输出} void loop(){int adc = allagread(0);//读取模拟电压并将其存储在整数ADC = MAP(ADC,0,1023,0,255)中;/* ----------------------------------------------------------------------------------------------------在值为10位的ADC的输出,值btw 0到1023,在值中btw0至255形式的模拟构图函数仅接收值,btw btw此范围 */ AnalogWrite(PWM,ADC);}

Alalog_input_output.ino.zip

视频

为自己自己尝试一下!得到bom。

7条评论
  • s
    Schedulemike 2015年9月5日

    超级良好的教学做得很好!

    像。 回复
  • G
    Greenmoonart 2016年9月27日

    我认为您应该为PWM使用PIN 3、5、6、9、10或11,而不是数字引脚2。

    另外,对于PWM输出,您不应在该引脚上使用Pinmode()。Pinmode()是指定数字输入或输出。

    像。 回复
  • t
    tonys_0 2018年8月26日

    对于“教学”野心:
    您不应在本地INT ADC(相同名称)上创建const int ADC
    当您以后做时,这很可怕,令人困惑
    Analogwrite(PWM,ADC)

    像。 回复