Arduino中LED灯实现256中颜色的渐变
2015-03-19 10:50
316 查看
根据颜色由三原色组成,根据其混成比例编写了此代码,实现了356种颜色的渐变过程;
//colort test;const int red = 9;const int green =10;const int blue = 11;void setup() {{pinMode(red, OUTPUT);pinMode(green, OUTPUT);pinMode(blue, OUTPUT);}}void loop() {//总共有8*8*4=256种颜色;for(double r=0.125; r<=1.0; r+=0.125) //8for(double g=0.125; g<=1.0; g+=0.125) //8for(double b=0.25; b<=1.0; b+=0.25) //4{double k1=g/r; //比例系数;double k2=b/r;for(double number=1.0; number<=255.0; number+=1.0) //同比例增加;{double R=number;double G=k1*R;double B=k2*R;if( R>254 ) //判断增加的值是否大于最大值255,如果是则停止增加,慢慢变暗;否则继续增加;{for( double R=255.0; R>0.0;R-=1.0){if(R<=1.0)break;else{double G=k1*R;double B=k2*R;analogWrite(red,R);analogWrite(green,G);analogWrite(blue,B);delay(20);}}break;}else if( G>254 ){for( double G=255.0; G>0.0;G-=1.0){if(G<=1.0)break;else{double R=G/k1;double B=k2*R;analogWrite(red,R);analogWrite(green,G);analogWrite(blue,B);delay(20);}}break;}else if( B > 254 ){for( double B=255.0; B>0.0;B-=1.0){if(B<=1.0)break;else{double R=B/k2;double G=k1*R;analogWrite(red,R);analogWrite(green,G);analogWrite(blue,B);delay(20);}}break;}else{analogWrite(red,R);analogWrite(green,G);analogWrite(blue,B);delay(20);}}}}
相关文章推荐
- 实现背景颜色的渐变效果
- 用CSS实现表格背景颜色渐变效果
- 用CSS滤镜实现颜色渐变效果
- WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变
- CSS3实现背景颜色渐变
- 实现背景颜色的渐变效果(code project)
- CSS实现DIV层背景颜色渐变
- (转)使用GradientFill实现控件颜色渐变
- (转)利用GradientFill函数实现颜色渐变效果
- CSS -- 实现DIV层背景颜色渐变 (兼容IE 火狐 谷歌浏览器)
- 用CSS实现颜色渐变
- VC++颜色渐变实现的3种方法
- 利用GradientFill函数实现颜色渐变效果
- 跨浏览器实现CSS滤镜颜色渐变
- 用CSS实现开心网标签词颜色渐变观点交互
- 窗体颜色渐变效果实现
- 在Web上用style实现完美颜色渐变
- CSS实现网页背景颜色渐变的效果。
- [原]CSS实现颜色渐变方法备忘
- android Button 切换背景,实现动态按钮和按钮颜色渐变