当前位置:首页  <  应用教程  <  【创客学堂】玩转Arduino-脉宽调制(PWM)实例...
【创客学堂】玩转Arduino-脉宽调制(PWM)实例
编辑:Xtm 2014-09-17 浏览次数:1121

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

先按照下图连接好电路

Arduino 电路

这里我使用的电阻阻值是50欧姆,这里并不唯一,需要根据所使用的LED及其亮度选择适合阻值的电阻。

Arduino 电路 元件 连接

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

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编辑环境

下载好程序就可以看到最终结果了。

Arduino 实际效果

相关文章:玩转Arduino-脉宽调制

                 玩转Arduino-编程语言

本文转自:Rebecca●Arduino极客