【seeed红版Arduino uno r3增强板试用体验】RGB呼吸灯

  • donatello
  • LV6工程师
  • |      2018-06-03 19:50:43
  • 浏览量 1568
  • 回复:0
我的项目中需要用到小红板的PWM功能,要使用此功能,那就必须在ArduinoIDE环境下启用PWM输出引脚,标准Arduino开发板带有6路PWM输出,分别是D3 D5 D6 D9 D10 D11。Arduino开发板的PWM精度一般,用于电子DIY爱好者的项目中是没有问题的,如接上MOS管调节LED的亮度等,但是用于工业控制的话,精度就有点低了。 我启用Arduino开发板的D9 D10 D11三路PWM引脚,接上一个三输入RGBLED灯: 在ArduinoIDE里面启用PWM代码非常简单,只有两步,第一,初始化引脚pinMode(pin,OUTPUT)函数,第二,设置引脚占空比analogWtite(pin,value),其中value的取值为0~255,也就是说Arduino中PWM的可调节梯度有256度,0为最低梯度,对应LED的最暗,电机停转梯度;255为最高梯度,对应LED最亮,电机全速转动梯度。在代码中我循环调节D9 D10 D11的占空比依次从低到高再从高到低变化,就可以做出三色呼吸灯的效果:
const uint8_t LED_R=9;

const uint8_t LED_G=10;

const uint8_t LED_B=11;



void setup() 

{

  pinMode(LED_R,OUTPUT);

  pinMode(LED_G,OUTPUT);

  pinMode(LED_B,OUTPUT);

  analogWrite(LED_R,0);

  analogWrite(LED_G,0);

  analogWrite(LED_B,0);

  Serial.begin(115200);

}



uint8_t value=0,i=0;



void loop() 

{

  for(i=0;i<255;i++)

  {

    analogWrite(LED_R,i);         

    delay(5);   

    Serial.print("R+ i=");

    Serial.println(i);  

  }

  for(i=255;i>0;i--)

  {

    analogWrite(LED_R,i);

    delay(5);

    Serial.print("R- i=");

    Serial.println(i);

  }

  

  for(i=0;i<255;i++)

  {

    analogWrite(LED_G,i);         

    delay(5);     

    Serial.print("G+ i=");

    Serial.println(i);

  }

  for(i=255;i>0;i--)

  {

    analogWrite(LED_G,i);

    delay(5); 

    Serial.print("G- i=");

    Serial.println(i);  

  }

      

  for(i=0;i<255;i++)

  {

    analogWrite(LED_B,i);         

    delay(5);  

    Serial.print("B+ i=");

    Serial.println(i);    

  }

  for(i=255;i>0;i--)

  {

    analogWrite(LED_B,i);

    delay(5);    

    Serial.print("B- i=");

    Serial.println(i);   

  }                   

}
看看效果:
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子