[进阶]RGB渐变灯

5521浏览
查看: 5521|回复: 2

[进阶] RGB渐变灯

[复制链接]
[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渐变灯小程序,重新复习了一下的三角函数。

dafenqi5219  见习技师
 楼主|

发表于 2017-5-13 22:01:15

RGB渐变灯图1


但是我发现我这个RGB等是共阳极的,所以取值要反过来,然后我使用了1-sinx。
回复

使用道具 举报

nicho  中级技匠

发表于 2017-5-15 00:16:38

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail