RGB三色灯简介
RGB色彩模式包含红绿蓝三种,通过控制红(R)、绿(B)、蓝(G)三种颜色的变化使其相互叠加产生花式颜色。而其颜色值的输出是通过PWM来控制的。RGB三基色按照不同的比例相加合成混色称为相加混色,除相加混色法之外还有相减混色法。
PWM控制
PWM,即脉冲宽度调制,是英文“Pulse Width ModulaTIon”的缩写。根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。
PWM功能简介
PWM主要通过analogWrite () 进行控制,针对Arudino UNO板子中带有"~"的3、5、6、9、10、11数字端口写入一个模拟值,通知高电平与低电平持续时间的比值控制LED的亮度变化或者电机的转速。
例如:欲使得内置的Arudino UNO 中的led亮度变为原来的一般,编写analogWrite (13,127)就可以了。一个电路让一个端口循环输出2.5V、3V、5V电压,仅仅用硬件电路就困难了,这时候就是PWM大显身手的时候了。
占空比:高电平与低电平持续时间之比。
硬件电路连接
Arduino引脚 | RGB LED(共阴极) |
---|---|
D11 | R |
D10 | B |
D9 | G |
GND | GND |
所需器件
名称 | 数量 |
---|---|
电阻 | 3 |
RGB LED灯 | 1 |
Arduino UNO开发板 | 1 |
控制代码
控制RGB代码如下
/*运行环境:Arduino 1.8.19*/ #define GREEN 9 #define BLUE 10 #define RED 11 int redValue; int greenValue; int blueValue; void setup(){ pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); digitalWrite(RED, HIGH); digitalWrite(GREEN, LOW); digitalWrite(BLUE, LOW); } void loop(){ #define delayTime 1 redValue = 255; greenValue = 0; blueValue = 0; for(int i = 0; i < 255; i += 1){ redValue -= 1; greenValue += 1; analogWrite(RED, redValue); analogWrite(GREEN, greenValue); delay(delayTime); } redValue = 0; greenValue = 255; blueValue = 0; for(int i = 0; i < 255; i += 1){ greenValue -= 1; blueValue += 1; analogWrite(GREEN, greenValue); analogWrite(BLUE, blueValue); delay(delayTime); } redValue = 0; greenValue = 0; blueValue = 255; for(int i = 0; i < 255; i += 1){ blueValue -= 1; redValue += 1; analogWrite(BLUE, blueValue); analogWrite(RED, redValue); delay(delayTime); } }