Arduino控制RGB三色LED灯,实现1600万种酷炫颜色

您所在的位置:网站首页 rgb三色led灯 Arduino控制RGB三色LED灯,实现1600万种酷炫颜色

Arduino控制RGB三色LED灯,实现1600万种酷炫颜色

2023-12-14 02:10| 来源: 网络整理| 查看: 265

正 文:

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