Arduino控制RGB三色LED灯,实现1600万种酷炫颜色 |
您所在的位置:网站首页 › rgb三色led灯 › Arduino控制RGB三色LED灯,实现1600万种酷炫颜色 |
正 文:
RGB LED 模块由一个贴片全彩 LED 制成,通过 R、G、B 三个引脚的 PWM 电压输入可以调节三种基色(红/蓝/绿)的强度从而实现全彩的混色效果。用 Arduino 对模块的控制可实现酷炫的灯光效果。 RGB LED产品特性1,使用 5050 全彩 LED 2,RGB 三基色接限流电阻防止烧坏 3,通过 PWM 调节三基色可混合得到不同的颜色 4,可与各种单片机接口 5.工作电压:5V 6.LED 驱动模式:共阴驱动 市面上常见的RGB LED灯有各种各样的,飘易本篇文章里,主要以下面的图片中的LED 为例子进行介绍: 这个透明的led灯接线,最长的是GND: 这些LED灯有个特性就是共阴,即RGB三个引脚分别接入Arduino的三个数字IO口,剩余的一个接arduino的GND。 除了这些共阴的RGB灯外,还有另外一种共阳的,就是公共的引脚接3.3V的VCC,比如下面这个共阳的三色RGB灯: 注意,共阳的和共阴的在设置颜色时要转换一下的,即 255 -R/G/B ,下面程序里会说明。 显示原理是在一棵LED灯里,有三种颜色的灯,红,绿,蓝。每种颜色的灯上的驱动电压不一样,亮度就不一样,它们组合在一起,就形成了各种颜色。 模块有3个输出: 1. R,红色输出, 2. G,绿色输出, 3. B,蓝色输出. 模块特点:3组信号输出,可通过单片机编程实现R,G,B三种颜色的混合达到全彩的效果, Arduino接线图R接arduino的9号数字口 G接arduino的10号数字口 B接arduino的11号数字口 公共的阴极接arduino的gnd 编写arduino程序注意,由于受引脚数量和云端控制节点的限制,我们把rgb的三种颜色转换为数字,RGB颜色对应的数字:-1(白色) 到 -16777216(对应全黑,不亮)。 #define REDPIN 9 //red 模拟量 #define GREENPIN 10 //green 模拟量 #define BLUEPIN 11 //blue 模拟量 long colorNum = -19456;// RGB颜色对应的数字:-1 到 -16777216 void setup() { // put your setup code here, to run once: Serial.begin(9600); while (!Serial) {} pinMode(REDPIN, OUTPUT); pinMode(GREENPIN, OUTPUT); pinMode(BLUEPIN, OUTPUT); Serial.println(int2rgb(-1, "")); Serial.println(rgb2int("255", "255", "255")); Serial.println(int2rgb(-16777216, "")); Serial.println(rgb2int("0", "0", "0")); Serial.println(int2rgb(-19456, "")); Serial.println(rgb2int("255", "180", "0")); } void loop() { testColor();// 颜色校正 setColorByNum(colorNum); delay(2000); } // ***共阴RGB*** - 设置RGB三色,参数范围:0-255 void setColor(int red, int green, int blue) { analogWrite(REDPIN, red); analogWrite(GREENPIN, green); analogWrite(BLUEPIN, blue); } // ***共阳RGB*** - 设置RGB三色,参数范围:0-255 void setColor(int red, int green, int blue) { analogWrite(REDPIN, 255-red); analogWrite(GREENPIN, 255-green); analogWrite(BLUEPIN, 255-blue); } // 根据颜色对应的数值设置RGB三色 void setColorByNum(long num) { String r = int2rgb(num, "r"); String g = int2rgb(num, "g"); String b = int2rgb(num, "b"); int r2 = r.toInt(); int g2 = g.toInt(); int b2 = b.toInt(); setColor(r2, g2, b2); } // 数字转成rgb字符串 String int2rgb(long int i, String flag) { long int r = (i & 0xff0000) >> 16; long int g = (i & 0xff00) >> 8; long int b = (i & 0xff); if(flag == "r") return String(r); if(flag == "g") return String(g); if(flag == "b") return String(b); return String(r) + "," + String(g) + "," + String(b); } // rgb转数字 long int rgb2int(String r, String g, String b) { long int r2 = r.toInt(); long int g2 = g.toInt(); long int b2 = b.toInt(); long int color = ((0xff |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |