说明
将一个模拟数值写进Arduino引脚。这个操作可以用来控制LED的亮度, 或者控制电机的转速. Arduino每一次对引脚执行analogWrite()指令,都会给该引脚一个固定频率的PWM信号。PWM信号的频率大约为490Hz.
在Arduino UNO控制器中,5号引脚和6号引脚的PWM频率为980Hz。在一些基于ATmega168和ATmega328的Arduino控制器中,analogWrite()函数支持以下引脚: 3, 5, 6, 9, 10, 11。
在Arduino Mega控制其中,该函数支持引脚 2 – 13 和 44 – 46。使用ATmega8的Arduino控制器中,该函数只支持引脚 9, 10, 11.
在调用analogWrite()函数前,您无需使用pinMode()函数来设置该引脚。
语法
analogWrite(pin, value)
参数
pin
:被读取的模拟引脚号码
value
:0到255之间的PWM频率值, 0对应off, 255对应on
返回值
无
示例程序
在本示例中,我们将10K电位器的三个引脚分别连接在5V, GND, 以及A0引脚。通过调节电位器, A0引脚的输入电压将在0V-5V之间。在Arduino内置的数模转换功能作用下,该输入电压将被映射到数值0-1023之间。我们将这一数值除以4从而得到0-255之间的数字。这一数字将被用于调整引脚3上LED的亮度。
连接说明
将10K电位器的三个引脚分别连接在5V, GND, 以及A0引脚
引脚3连接LED正极,LED负极连接150欧姆电阻一端,电阻另外一段连接Arduino的GND引脚。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
/* analogWrite()示例程序 v1.0 Created 2016 by 太极创客 www.taichi-maker.com 说明: 本程序旨在演示如何使用analogWrite() 程序将A0引脚所读取到的数值转换为 0-255之间的数值, 并通过这一数值控制引脚3的LED亮度。 获得具体连接电路图,请参阅太极创客网站。 This example code is in the public domain. */ // 引脚3连接LED int ledPin = 3; //变量val用来存储模拟输入信号 int val = 0; void setup() { // 将连接LED的引脚设置为输出模式 pinMode(ledPin, OUTPUT); } void loop() { //读取引脚A0的输入信号,并将该数值赋给变量val val = analogRead(A0); // 将引脚A0读取的数值转换为0-255之间 // 并将该数值写入引脚3 analogWrite(ledPin, val / 4); } |