Arduino板PWM接口使用

analogWrite(pin, value)

 

 

 先按照下图连接号电路

这次就用Arduino和一组三色灯(红、黄、绿)来实际应用一下PWM吧,先先观察一下Arduino板子,共有六个PWM接口,他们分别是数字接口3、5、6、9、10、11 ,方便起见我们使用9、10、11这三个连续的PWM接口。在编写程序的过程中,我们会用到模拟写入analogWrite(PWM接口,模拟值函数,对于模拟写入analogWrite()函数,PWM的调制频率被设置为30KHz。

 



 

 

下面就可以编写程序了,我们就让三个小灯依次缓慢亮起再缓慢熄灭,这样往复循环。


int redpin=11;//定义LED接口
int yellowpin=10;
int greenpin=9;
int redval;//定义LED变量
int yellowval;
int greenval;
int i=0;
void setup()
{
pinMode(redpin,OUTPUT);//设置LED接口为输出接口
pinMode(yellowpin,OUTPUT);
pinMode(greenpin,OUTPUT); 
pinMode(redval,INPUT);//设置LED变量为输入值
pinMode(yellowval,INPUT);
pinMode(greenval,INPUT);
Serial.begin(9600);//连接到串行端口,波特率为9600
}
void loop()
{
i++;
if(i<200)
{

redval+=1;//红灯变亮
greenval-=1;//绿灯变暗
yellowval=1;//黄灯不变
}
else if(i<400)
{
redval-=1;//红灯变暗
greenval=1;//绿灯不变
yellowval+=1;// 黄灯变亮
}
else if(i<600)
{
redval=1;//红灯不变
greenval+=1;//绿灯变亮
yellowval-=1; //黄灯变暗
}
else
{
i=0;//重新给i赋值进行新循环
}

analogWrite(redpin,redval);//给LED接口付模拟值
analogWrite(yellowpin,yellowval);
analogWrite(greenpin,greenval);
Serial.print(i,DEC);//显示出i的值
Serial.print( " R:");//分别显示出各个LED的模拟值
Serial.print(redval,DEC);
Serial.print( " Y:");
Serial.print(yellowval,DEC);
Serial.print( " G:");
Serial.println(greenval,DEC);

}

 

好了,现在就可以看出模拟输出逐渐变化的结果了。

你可能感兴趣的:(Arduino)