本实验采用OJ直滑电位器模块,实现与RGB led互动,当滑动直滑电位器时,RGBled对应发出炫彩的灯光。
Zduino UNO × 1;
OJ传感器扩展板× 1;
OJ传感器扩展板× 1;
USB数据线 × 1 ;
3p杜邦线 × 2 ;
直滑电位器模块 × 1 ;
RGB LED模块 × 1 ;
主要知识点:
三原色的介绍:人眼对红、绿、蓝最为敏感,人的眼睛像一个三色接收器的体系,大多数的颜色可以通过红、绿、蓝三色按照不同的比例合成产生。同样,绝大多数单色光也可以分解成红、绿、蓝三种色光,这是色度学的最基本的原理,也称三原色原理。这里的RGB LED实质是对应3中颜色红绿蓝的LED,当我们以不同亮度配比三种颜色时,整体显示出来光线变得幻彩美丽。
analogWrite(PIN,VALUE) 输出PWM波形,也就是利用PWM技术改变输出不同的平均电压值,这里就可以调节灯光的亮暗程度。
这里输出的PWM默认频率为490HZ的一个方波。
PIN—只能为带有PWM输出的IO口,在UNO中只有 3 ,5, 6,9, 10, 11 这6个数字IO口带有PWM功能。
VALUE—PWM输出的值0—255
连线示意图:
直滑电位器对应接A0口
RGBled对应接3、5、6数字IO口
Arduino示例程序:
/*
[url=http://www.openjumper.cn/]www.openjumper.cn[/url]
日期:2013.5.18
IDE 版本:1.0.1
功能:直滑电位器与灯光互动实验,当从0位开始滑动电位器时,依次红光、绿光、
蓝光、白光慢慢由亮变暗
*/
#define R 3
#define G 5
#define B 6 //定义RGB数字连接IO口
void setup()
{
pinMode(R,OUTPUT);
pinMode(G,OUTPUT);
pinMode(B,OUTPUT); //将连接LED灯的数字IO口置为输出状态
}
void loop()
{
int value=analogRead(A0); //定义一个参数存储A0口读到的模拟值,范围在0~1023
if(value>=0 && value<256)
{
analogWrite(R,value); //如果电位器输出值在0~256,则用PWM点亮RGB中的红色,同时熄灭绿色和蓝色
analogWrite(G,255);
analogWrite(B,255); //由于RGBled模块是共阳极,所以PWM输出最高时,LED亮度就最低
}
else if(value>=256 && value<512)
{
analogWrite(G,value-256); //调节绿光变化
analogWrite(R,255);
analogWrite(B,255);
}
else if(value>=512 && value<768)
{
analogWrite(B,value-512); //调节蓝光变化
analogWrite(R,255);
analogWrite(G,255);
}
else
{
analogWrite(R,value-768);
analogWrite(G,value-768);
analogWrite(B,value-768); //三光合成白光,同时进行亮度调节
}
}
注意事项:由于RGBled模块是共阳极,它们的正极共同连接到VCC,当对于连接 R G B的IO口,需输出低电平时才会点亮该颜色的LED,若输出高电平则使LED熄灭。利用PWM调节IO口输出状态可以调灯亮度。