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运行。
实验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) ; }
实验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);}
视频
为自己自己尝试一下!得到bom。
超级良好的教学做得很好!
我认为您应该为PWM使用PIN 3、5、6、9、10或11,而不是数字引脚2。
另外,对于PWM输出,您不应在该引脚上使用Pinmode()。Pinmode()是指定数字输入或输出。
对于“教学”野心:
您不应在本地INT ADC(相同名称)上创建const int ADC
当您以后做时,这很可怕,令人困惑
Analogwrite(PWM,ADC)