前言
光敏电阻相信大家都很熟悉,就像是一个自动的滑动变阻器,能随着光照强度的不同改变阻值。本文将通过多个实验让大家熟悉光敏电阻的相关使用及其注意事项。
二、光敏电阻与蜂鸣器
1、目标实现
光照强度越大,蜂鸣器的声音越强;光照强度越小,蜂鸣器声音越弱
2、实验器件
- 开发板:arduion
- 面包板:1 个
- 有源蜂鸣器: 1 个
- 光敏电阻:1 个
- 220欧电阻:1 个
- 多彩杜邦线:若干
3、接线
接线原理如下图所示
实验接线如图所示
4、代码程序
int analogpin= A0; //定义光敏电阻的模拟输出口为A0
int buzzer = 7; //定义蜂鸣器的引脚为 7
int val; //定义val变量暂存传感器的变量数值
void setup()
{
pinMode(buzzer,OUTPUT); //定义数字接口 7 为输出
Serial.begin(9600); //设置波特率为 9600
}
void loop()
{
val=analogRead(analogpin); //读取传感器的模拟值并赋值给val
Serial.println(val); //显示val变量
analogWrite(buzzer,val); //打开蜂鸣器并设置响度
delay(10); // 延迟0.01秒
}
三、光敏电阻与单个LED灯
1、目标实现
光照强度越大,LED亮度越大;光照强度越小,LED亮度越小。
当光敏电阻与LED灯调换位置时,光照强度越大,LED亮度越小;光照强度越小,LED亮度越大。
2、实验器件
- 开发板:arduion
- 面包板:1 个
- LED灯: 1 个
- 光敏电阻:1 个
- 220欧电阻:2 个
- 多彩杜邦线:若干
3、接线
接线原理如下图所示
实验接线如图所示
4、代码程序
int analogpin= A0; //定义光敏电阻的模拟输出口为A0
int LED = 7; //定义LED的引脚为 7
int val; //定义val变量暂存传感器的变量数值
void setup()
{
pinMode(LED,OUTPUT); //定义数字接口 7 为输出
Serial.begin(9600); //设置波特率为 9600
}
void loop()
{
val=analogRead(analogpin); //读取传感器的模拟值并赋值给val
Serial.println(val); //显示val变量
analogWrite(LED,val); //打开LED并设置亮度
delay(10); // 延迟0.01秒
}
四、光敏电阻与多个LED灯
1、目标实现
当光照强度为 1-300 时,红灯开始闪烁3下后常亮 0.5 秒;
当光照强度为 320-700 时,黄灯开始闪烁3下后常亮 0.5 秒;
当光照强度为720-1020 时,绿灯开始闪烁3下后常亮 0.5 秒。
在此之前,我们需要知道当传感器变量输出后会执行完相应的代码后再重新判断传感器的输出量,因此需要一定的时间返回相关的变量,所以想要光敏电阻的反应更敏捷时,就需要使执行相关程序的时间越短越好。
2、实验器件
- 开发板:arduion
- 面包板:1 个
- LED灯: 3 个(红、黄、绿)
- 光敏电阻:1 个
- 220欧电阻:4 个
- 多彩杜邦线:若干
3、接线
接线原理如下图所示
实验接线如图所示
4、代码程序
int analogpin = A0; //定义光敏电阻的模拟输出口为A0
int redled = 8; //红灯LED输出
int yellowled = 7; //黄灯LED输出
int greenled = 6; //绿灯LED输出
int val; //定义val变量暂存传感器的变量数值
int i = 0; //控制执行哪个灯亮
void setup()
{
pinMode(redled, OUTPUT);
pinMode(greenled, OUTPUT);
pinMode(yellowled, OUTPUT); //分别定义红灯、绿灯、黄灯的接口为输出接口
Serial.begin(9600); //设置波特率为 9600
}
void loop()
{
val = analogRead(analogpin); //读取传感器的模拟值并赋值给val
Serial.println(val); //显示val变量
if (val >= 1 && val <= 300) i = 8; //当时阻值为 1-300 时,i 为红灯对应的 8 号引脚
if (val >= 320 && val <= 700) i = 7; //当时阻值为 320-700 时,i 为黄灯对应的 7 号引脚
if (val >= 720 && val <= 1020) i = 6; //当时阻值为 720-1020 时,i 为绿灯对应的 6 号引脚
RUN_LED(i);
}
int RUN_LED(int i) //对应颜色的灯闪烁三下后保持常亮 0.5 秒
{
for (int j = 0; j < 3; j++)
{
digitalWrite(i, HIGH);
delay(100);
digitalWrite(i, LOW);
delay(100);
}
digitalWrite(i, HIGH);
delay(500);
clear_led();
}
void clear_led()//关闭所有灯
{
digitalWrite(redled, LOW);
digitalWrite(yellowled, LOW);
digitalWrite(greenled, LOW);
}
Gitte源码仓库:https://gitee.com/chen_xy_chen/arduion_c.git
五、最终效果
具体效果视频就不在此展示了,感兴趣的伙伴可以自行接线复制代码进行实验。