实验背景
温度与我们的生活和工作息息相关。在生活中,如果温度过高,我们会有生命危险。在工作中,温度的高低会影响我们的产品质量。而温度警报器可以让我们尽可能规避这些危害。
硬件准备
RGB三色灯:1个
220欧电阻:3个
1K电阻:1个
热敏电阻:1个
杜邦线:9根
面包板:1块
硬件连线
1、将RGB三色灯和热敏电阻插入面包板中
2、用三根杜邦线和三个220欧电阻分别将RGB三色灯的三色极接到11号(红色)、10号(绿色)、9号(蓝色)引脚
3、用一根杜邦线将RGB三色灯的正极接到带加号的横排插口上
4、用1K电阻与热敏电阻的一端相连
5、用一根杜邦线将热敏电阻这端接到A0接口
6、用一根杜邦线将热敏电阻另一端接到带加号的横排插口上
7、用一根杜邦线将1K电阻另一端接到带减号的横排插口上
8、用杜邦线将5V接口接到带加号的横排插口上
9、用杜邦线将GND接口接到带减号的横排插口上
软件程序
//温度警示器,随着温度的升高,RGB灯的颜色发生从绿色到黄色再到红色的变化
int redpin = 11; //定义LED接口
int greenpin = 10;
int bluepin = 9;
int potpin = A0;//定义模拟接口
int redval; //定义LED变量
int blueval;
int greenval;
int val;//接收热敏电阻的模拟值
void setup() {
Serial.begin(9600);
pinMode(redpin, OUTPUT); //设置LED接口为输出接口
pinMode(bluepin, OUTPUT);
pinMode(greenpin, OUTPUT);
}
//绿,红+绿=黄,红
void loop() {
val = analogRead(potpin);
Serial.println(val);
if (val <= 115){
GREEN();//绿色
}
else if (val <= 125){
YELLOW();//从绿色渐变到黄色
}
else{
RED();//从黄色渐变到红色
}
analogWrite(redpin, 255 - redval); //给LED接口付模拟值
analogWrite(bluepin, 255 - blueval);
analogWrite(greenpin, 255 - greenval);
}
void GREEN(){
greenval = 255;
redval = 0;
blueval = 0;
}
void YELLOW(){
greenval = 255;
blueval = 0;
redval = 30 * (val-115);//热敏电阻模拟值比115大1,redval就增加30
if (redval > 255){ //redval最大值为255
redval = 255;
}
}
void RED(){
redval = 255;
blueval = 0;
greenval = 255 - 30 * (val-125);//热敏电阻模拟值比125大1,greenval就减少30
if (greenval < 0){ //greenval最小值为0
greenval = 0;
}
}
成品展示视频
温度警示器,随着温度的升高,RGB灯的颜色发生从绿色到黄色再到红色的变化
【Arduino10】温度警报器
总结
本次实验,我通过电阻的变化大小来设计了三色灯的变化幅度,并使用 if 语句来控制输出值在0~255这个范围内。