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




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