arduino实验–更改LED灯的亮度

需要的元件:

LED灯led

限流电阻220欧姆:电阻

按照下面电路图连接:

1

输入代码如下:

int ledPin = 11;
float sinVal;
int ledVal;

void setup() {
	pinMode(ledPin, OUTPUT);
}

void loop() {
	for (int x = 0; x<180; x++) {
		//当使用sin函数是,先转化角度单位到弧度单位
		sinVal = (sin(x*(3.14 / 180)));
		ledVal = int(sinVal * 255);
		analogWrite(ledPin, ledVal);
		delay(50);
	}
}

这里的代码很简单。主要是引入了一个PWM的概念

首先,给LED引脚设置变量,一个正弦波浮点数值ledVal将整型值送到数字PWM引脚11。这样做的目的是让LED的亮度随着正弦函数渐变,而不是单纯的由全亮直接转为全暗。

这里采用sin()函数,为了不得到负值,我们将x的值设定在0-179之间。并且sin()函数的值在0-1之间,所以,乘以255获得最大亮度。因此采用以下语句将浮点值sinVal转换成整型值:

ledVal=int(sinVal*255);

之后使用下面的语句将这个数值送到数字PWM引脚11:

analogWrite(ledPin,ledVal);

类型转换意味着将浮点值转变为整型值,但是如何发送一个模拟值到一个数字引脚?观察以下arduino开发板,如果查看数字引脚,你会发现其中6个引脚(3,5,6,9,10和11)旁边标注着PWM(或者是~的符号)。这些引脚不同于其他引脚,因为它们可以输出PWM信号。

PWM是Pulse Width Modulation的缩写,这是一项用数字方法获得模拟量的技术。想要了解更多可以参考这里

0 Comments
Leave a Reply