硬件准备
RGB三色灯:1个
火焰传感器:1个
倾斜传感器:1个
220欧电阻:3个
1K电阻:2个
杜邦线:若干
面包板:1个
硬件连线
1、就RGB三色灯、倾斜传感器、火焰传感器插入面包板
2、用三根杜邦线和三个220欧电阻分别将RGB三色灯的三色极接到11号(红色)、10号(绿色)、9号(蓝色)引脚
3、用一根杜邦线将RGB三色灯的正极接到带加号的横排插口上
4、用两根杜邦线分别将倾斜传感器的两边接入接到竖排插口和带加号的横排插口
5、将1k电阻的一端接到倾斜传感器的一端
6、用杜邦线将1k电阻的另一端接到带减号的横排插口上
7、用杜邦线将倾斜传感器与1k电阻相连的那端接到A0接口;
8、用杜邦线将火焰传感器的负极接到 带加号的横排插口
9、用杜邦线将火焰传感器的正极接到 A5 引脚
10、用电阻将火焰传感器的另一端接到到带减号的横排插口上
11、用杜邦线将GND接口接到带减号的横排插口上
12、用杜邦线将5V接口接到带加号的横排插口上
软件程序
int redpin = 11;//红色引脚
int greenpin = 10;
int bluepin = 9;
int redval = 0;//红色变量
int blueval = 0;
int greenval = 0;
int flamepin = A5;//定义火焰传感器引脚
int tiltpin = A0;//定义倾斜传感器引脚
int flameval = 0;//存储火焰传感器的模拟值
int tiltval = 0;//存储倾斜传感器的模拟值
void setup(){
Serial.begin(9600);
pinMode(redpin,OUTPUT);
pinMode(bluepin,OUTPUT);
pinMode(greenpin,OUTPUT);
}
void loop(){
flameval = analogRead(flamepin);//获取火焰传感器的模拟值并赋值给flameval
tiltval = analogRead(tiltpin);//获取倾斜传感器的模拟值并赋值给tiltval
Serial.print(flameval);
Serial.print(" ");
Serial.print(tiltval);
Serial.println(" ");
if ( (flameval>51) && (tiltval==0) ){
redFlicker();//红灯闪烁
}
else if (flameval > 51){
RED();//红灯
}
else if (tiltval == 0){
YELLOW();//黄灯
}
else{
runLight(0,0,0);//灯灭
}
}
void runLight(int red, int green, int blue){
analogWrite(redpin,255-red);
analogWrite(bluepin,255-blue);
analogWrite(greenpin,255-green);
}
void redFlicker(){
runLight(255,0,0);
delay(1000);
runLight(0,0,0);
delay(1000);
}
void RED(){
runLight(255,0,0);
}
void YELLOW(){
runLight(255,255,0);
}
成品展示视频
当只倾斜时,黄灯亮;当只有火焰时,红灯亮;当又倾斜又着火时,红灯闪烁
【Arduino13】火焰传感器与倾斜传感器联合控制三色灯
总结
通过设计并完成这个实验,我能够熟练地运用倾斜传感器和火焰传感器,并复习了RGB三色灯的使用。