RGB渐变灯

2017-05-131.4万
AI 快速预览详细 收起
这个项目是一个使用Arduino实现RGB渐变灯的小程序。通过设定周期值和三角函数计算,实现了红绿蓝三色的平滑渐变效果。项目简单易学,适合初学者,特别是对编程感兴趣的孩子。硬件清单包括Arduino板、RGB LED灯等。最终效果是灯光颜色从红色逐渐过渡到绿色,再过渡到蓝色。难度等级较低,适合初学者尝试。
[mw_shl_code=cpp,true]int RedPin   = 9;
int GreenPin = 10;
int BluePin  = 3;

int cycleVal;

int RedVal=0;
int GreenVal=0;
int BlueVal=0;

float sinRed;
float sinGreen;
float sinBlue;

void setup()
{
  pinMode(RedPin,OUTPUT);
  pinMode(GreenPin,OUTPUT);
  pinMode(BluePin,OUTPUT);
}
void loop()
{
  //设定周期值360
  cycleVal++;
  //判断周期值是否小于180 然后点亮红灯
  if(cycleVal<180)
  {
    sinRed=sin(cycleVal*(3.1412/180));
    RedVal=int((1-sinRed)*255); //应该等价于 sinRed<<8?
    analogWrite(RedPin,RedVal);
  }
  //判断周期值是否在90~180之间点亮绿灯
  if(cycleVal>90 && cycleVal<180)
  {
    //绿灯0~90度的周期所以要减去90
    sinGreen=sin((cycleVal-90)*(3.1414/180));
    GreenVal=int((1-sinGreen)*255);
    analogWrite(GreenPin,GreenVal);
  }
  //判断周期是否在180~360之间点亮蓝灯
  if(cycleVal>180)
  {
    //蓝灯0~90度的周期所以要减去180
    sinBlue=sin((cycleVal-180)*3.1412/180);
    BlueVal=int((1-sinBlue)*255);
    analogWrite(BluePin,BlueVal);
  }
  //周期值不能大于360
  if(cycleVal>360)cycleVal=0;
  //50ms的延时效果不错
  delay(50);
}[/mw_shl_code]

做了一个十分简单的RGB渐变灯小程序,重新复习了一下的三角函数。

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
nicho
nicho
评论内容
dafenqi5219
dafenqi5219
作者
[align=center]

[/align]
但是我发现我这个RGB等是共阳极的,所以取值要反过来,然后我使用了1-sinx。
- 没有更多了 -