极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: swim

Arduino入门教程--点亮RGB LED

  [复制链接]
发表于 2014-11-19 21:29:42 | 显示全部楼层
灯不错,路过路过路过路过
回复 支持 反对

使用道具 举报

发表于 2015-1-24 18:35:20 | 显示全部楼层
我是新手
RGB还有其他程序吗
回复 支持 反对

使用道具 举报

发表于 2015-2-4 15:55:03 | 显示全部楼层
本帖最后由 一瞬の空 于 2015-2-4 16:31 编辑
火影 发表于 2015-1-24 18:35
我是新手
RGB还有其他程序吗


连接


波形图
转的三相电的图,实际图像是最大值为255最小值为0的(懂三角函数的都懂)


程序

  1. /*
  2. 作品:RGB共阳LED颜色渐变
  3. 注释:LED共阳,4脚接正极,其他接RGB颜色
  4. 时间:2015.02.03
  5. 作者:一瞬の空
  6. */
  7. const int LED1=3;
  8. const int VCC=4;
  9. const int LED2=5;
  10. const int LED3=6;//定义引脚
  11. float a=0;//计数用,提供函数x轴
  12. int time=10;//延迟时间,单位毫秒,调整变化快慢
  13. int r=0;
  14. int g=0;
  15. int b=0;//三个颜色设定

  16. void setup()
  17. {
  18.   pinMode(LED1,OUTPUT);
  19.   pinMode(LED2,OUTPUT);
  20.   pinMode(LED3,OUTPUT);
  21.   pinMode(VCC,OUTPUT);//定义引脚输入输出模式
  22.   digitalWrite(VCC,HIGH);//3,5,6引脚输出pwm,为了方便,设置4为高电平
  23. }

  24. void loop()
  25. {
  26. &#160;&#160;for(a=0;a<6.28;a=a+0.01)//for循环,格式“for(初始化;条件;运算),此循环用于提供变化的数
  27. &#160;&#160;{
  28. &#160;&#160;&#160;&#160;r=(127.5*(sin(a)+1));
  29. &#160;&#160;&#160;&#160;g=(127.5*(sin(a-2.09)+1));
  30. &#160;&#160;&#160;&#160;b=(127.5*(sin(a+2.09)+1));//r,g,b运算表达式,X轴错开2.09以达到同一时间不同亮度
  31. &#160;&#160;&#160;&#160;/*
  32. &#160;&#160;&#160;&#160;&#160;此处用了三相电公式
  33. &#160;&#160;&#160;&#160;&#160;V1&#160;=&#160;Asin(2πft)=Asin(wt)
  34. &#160;&#160;&#160;&#160;&#160;V2&#160;=&#160;Asin(2πft&#160;-&#160;2π/3)=Asin(wt-2π/3)
  35. &#160;&#160;&#160;&#160;&#160;V3&#160;=&#160;Asin(2πft&#160;+&#160;2π/3)=Asin(wt+2π/3)
  36. &#160;&#160;&#160;&#160;&#160;*/
  37. &#160;&#160;&#160;&#160;analogWrite(LED1,r);
  38. &#160;&#160;&#160;&#160;analogWrite(LED2,g);
  39. &#160;&#160;&#160;&#160;analogWrite(LED3,b);//输出亮度pwm调制波,范围0~255
  40. &#160;&#160;&#160;&#160;delay(time);//延时毫秒,防止运算太快变化不明显
  41. &#160;&#160;}
  42. }

复制代码
视频

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-2-11 15:00:40 | 显示全部楼层
楼主这程序最后的算法不对,你直接用颜色值就行了,干嘛还要用255减一下啊
  1. void setColor(int redValue, int greenValue, int blueValue)
  2. {
  3.   analogWrite(redPin, red);
  4.   analogWrite(greenPin, green);
  5.   analogWrite(bluePin, blue);  
  6. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2015-2-11 15:01:30 | 显示全部楼层
My_Skity 发表于 2015-2-11 15:00
楼主这程序最后的算法不对,你直接用颜色值就行了,干嘛还要用255减一下啊

发错了,把"Value"去掉
回复 支持 反对

使用道具 举报

发表于 2015-3-10 09:46:04 | 显示全部楼层
楼主  我想问下 编译时候出现错误 怎么排除   
回复 支持 反对

使用道具 举报

发表于 2015-4-12 15:03:06 | 显示全部楼层
请问, 255-green   这里为什么要用255减去所输的值
回复 支持 反对

使用道具 举报

发表于 2015-4-23 17:11:57 | 显示全部楼层
一瞬の空 发表于 2015-2-4 15:55
连接

大神 我想问一下 如果按键控制三色灯的一次亮 怎么弄的啊
回复 支持 反对

使用道具 举报

发表于 2015-5-5 22:32:45 | 显示全部楼层
好东西!!!!!!
回复 支持 反对

使用道具 举报

发表于 2015-6-30 18:48:58 | 显示全部楼层
请问共阴的RGB LED代码要怎么写?
回复 支持 反对

使用道具 举报

发表于 2015-7-23 21:34:44 | 显示全部楼层
不错不错。
回复 支持 反对

使用道具 举报

发表于 2015-8-22 23:05:05 | 显示全部楼层
请问如何用三个电位器,分别控制R\G\B的亮度,也就是说手动输入混合颜色。
回复 支持 反对

使用道具 举报

发表于 2015-8-22 23:13:36 | 显示全部楼层
myxgda 发表于 2015-8-22 23:05
请问如何用三个电位器,分别控制R\G\B的亮度,也就是说手动输入混合颜色。

通过analogRead读取电位计的值,然后将值整合到0到255的范围,然后再输出给RGB彩灯就可以了,我之前做过用电位计控制单个彩灯,原理是一样的
回复 支持 反对

使用道具 举报

发表于 2015-10-7 13:41:02 | 显示全部楼层
看到这里。。学到新知识了。
回复 支持 反对

使用道具 举报

发表于 2015-12-6 21:12:08 | 显示全部楼层
想控制多个rgb led 板子上的pwm口不够 有什么办法吗?
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 20:21 , Processed in 0.046912 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表