目录
4.1 实验题目
- 本次实验题目为:基于Arduino开发板的电位器控制RGB灯颜色变化实验
4.2 实验目的
- 通过基于Arduino开发板的电位器控制RGB灯颜色变化实验,学习如何使用电位器读取模拟输入,并通过程序控制RGB LED灯的颜色。
4.3 实验原理
- 电位器产生的模拟信号通过Arduino的模拟输入引脚读取,然后通过程序将该值映射到RGB LED的颜色,实现电位器控制RGB灯颜色的变化。
4.4 实验步骤
- 将电位器的三个引脚连接到5V电源、GND和Arduino的模拟输入引脚。
- 将RGB LED通过3个电阻连接到Arduino的数字输出引脚。
- 使用Arduino IDE编写程序,读取电位器的值,并将其映射到RGB LED的颜色。
- 上传程序到Arduino开发板。
- 观察RGB LED的颜色随电位器旋钮的旋转而变化。
4.5 实验仪器
完成本次实验所需的元器件如表 4所示。
元器件 | 数量 | 备注 |
Arduino开发板 | 1个 | / |
串口线 | 1条 | / |
面包板 | 1个 | / |
按钮 | 1个 | / |
250 kΩ 电位器 | 1个 | / |
1 kΩ 电阻 | 6个 | / |
LED RGB | 1个 | / |
LED | 1个 | / |
杜邦线 | 若干 | / |
4.6 电路设计
如图 4所示,为本次实验的电路设计图。
4.7 程序设计
以下是结合本次实验的电路设计图编写的实验程序,可以直接复制到Arduino单片机中进行烧录,烧录完成后即可实现本次实验要求达到的效果。
int i;//i循环
int led=6;//led接口6
int potpin=0;//电位器接口0
int val=0;//暂存变量
int inpin=7;//接口7
int val3;//暂存变量
int R=11;//R接口11
int G=10;//G接口10
int B=9;//B接口9
void setup()
{
pinMode(led,OUTPUT);//output led
Serial.begin(9600);//波特率9600
pinMode(inpin,INPUT);//按键接口为输入接口
pinMode(R,OUTPUT);//output R
pinMode(G,OUTPUT);//output G
pinMode(B,OUTPUT);//output B
}
void loop()
{
val3=digitalRead(inpin);//赋值
//检测按键是否按下
if(val3==LOW)
{
digitalWrite(led,LOW);
//循环语句,控制PWM亮度增加
for(i=0;i<=255;i++)
{
analogWrite(led,i);
delay(5);//持续5ms
}
//循环语句,控制PWM亮度减小
for(i=255;i>=0;i--)
{
analogWrite(led,i);
delay(5);//持续5ms
}
delay(500);//延迟500ms
val=analogRead(potpin);//赋值
Serial.println(val);//显示
analogWrite(R,val);//打开RGB并设置亮度
analogWrite(G,val);//打开RGB并设置亮度
analogWrite(B,val);//打开RGB并设置亮度
if(val>=0&&val<300)
{
analogWrite(R,255);
analogWrite(B,0);
analogWrite(G,0);
}
else if(val>=300&&val<700)
{
analogWrite(R,0);
analogWrite(B,0);
analogWrite(G,255);
}
else
{
analogWrite(R,0);
analogWrite(B,255);
analogWrite(G,0);
}
delay(10);//延迟10ms
}
else
{
digitalWrite(led,HIGH);
}
}
4.8 实验总结
- 随着电位器旋钮的旋转,RGB LED的颜色逐渐改变。旋钮旋转到不同位置时,红、绿、蓝三个通道的亮度相应地调整,从而产生不同颜色的混合效果。
- 通过这个实验,我学到了如何使用电位器读取模拟输入,并通过程序映射到RGB LED的颜色。实验中,我遇到了一些问题,例如电路连接错误或映射函数的调整,但通过仔细检查和学习相关知识,我成功解决了这些问题。这个实验为我理解模拟输入和PWM输出在控制多通道LED颜色中的应用提供了实际经验。